【问题标题】:Is a 'for loop' a function?'for循环'是一个函数吗?
【发布时间】:2017-03-17 12:30:34
【问题描述】:

'for 循环'是一个函数吗?如果不是,那是什么?它是如何工作的?

C 中的示例:

for(int i=0; i<32; i++)
{
    ...
}

Python 示例:

for i in range(0, 32):
    print "..."

【问题讨论】:

  • 不,它是一个关键字:函数是将输入转换为输出的对象。 for 不会那样做。
  • 这是一个表示控制流的关键字。
  • 嗯...有道理...谢谢!我应该删除帖子吗?
  • @WillemVanOnsem nopes,for loop 不是关键字,它是包含for 关键字的语句。
  • 在python中也不是函数

标签: python c syntax


【解决方案1】:

不,整个事物被称为“迭代语句”。包含for 关键字的语句称为for 语句。

引用C11,第 6.8 章,

语句指定要执行的操作。 [...]

并从 §6.8.5

迭代语句:

while ( expression ) statement

do statement while ( expression ) ;

for ( expressionopt ; expressionopt ; expressionopt ) statement

for ( declaration expressionopt ; expressionopt ) statement

【讨论】:

  • 您能给我们提供参考吗?
  • 你能提供链接吗?
  • 实际的规格需要花钱,但是您可以在线获得一些草稿版本。
  • 好的!我会搜索它!谢谢! ;)
  • @BrennoLeal here's one, if you want。 :)
【解决方案2】:

基本上,任何具有可迭代方法的对象都可以 在 Python 的 for 循环 中使用。甚至 strings,尽管没有 可迭代的方法 - 但我们不会在这里讨论。拥有一个 可迭代方法基本上意味着数据可以在列表中呈现 形式,其中有多个值以有序的方式。你可以 通过使用 next() 和 iter() 创建对象来定义您自己的可迭代对象 方法。

您可以从For loop Python wiki查看更多详细信息。

【讨论】:

    【解决方案3】:

    不,for 循环是 c 和 c++ 中的迭代条件语句

    C书n12566.8.5.3for语句

    声明

    for ( 子句 1 ; 表达式 2 ; 表达式 3 )

    声明 行为如下:表达式 expression-2 是控制 在每次执行循环体之前计算的表达式。 表达式 expression-3 在之后被评估为 void 表达式 循环体的每次执行。如果第 1 条是声明,则 它声明的任何标识符的范围是 声明和整个循环,包括其他两个表达式; 它在第一次评估之前按执行顺序到达 控制表达式。如果 Clause-1 是一个表达式,它是 在第一次评估之前评估为 void 表达式 控制表达。

    【讨论】:

      【解决方案4】:

      for循环不是函数;相反,它是一个具有条件头的迭代语句(例如:计数器“i”不应大于或小于 any 数字 n,而 i 递增某个每次循环迭代的编号)。条件头不应被视为 for 循环的参数。 for 循环还有一段用花括号括起来的代码(这里只指 C 语言)。

      函数和for循环的区别在C语言中应该很明显:

      • 一个函数只在另一个函数中被调用;它不能在另一个函数中定义。因此,for 循环不能是一个函数,因为它的代码定义了花括号在它正在实现的函数中

      所以我们不能有类似的东西:

       int main()
       {
          void AnyFunction() // cannot define a function inside another function. It can only be called
          {
              printf("Hello");
          }
      }
      

      但是我们可以有类似的东西:

      int main()
      {
          for (int i = 0; i < 5; i++) // If this is a function, how can we define it inside another function?
          {
              printf("Hello");
          }
      }
      

      希望这会有所帮助。

      【讨论】:

      • 但从概念上讲,它是另一个函数中的一个函数。所以它是一个函数!只是语法不同。
      【解决方案5】:

      如果你深入到汇编程序级别和基本的 CPU 指令,函数是什么?函数只是被 JMP(跳转)指令包围的一些代码块。因此,指令指针(当前正在执行的指令)从程序中的其他地方跳转到函数的开头,执行它的代码,然后跳转到其他地方。

      从这个意义上说,循环绝对是一个函数。唯一的细微差别是它通常会跳转到自己的开始处检查某些条件并再次执行自己,而不是跳转到其他地方(通常是调用的地方)。

      是的,在更高的抽象级别上它与函数有很大不同,但在基本级别上它是函数。您可以将其视为另一个函数中的函数。因此,您应该始终将循环视为函数中的“自治岛”。

      【讨论】:

        【解决方案6】:

        for 是一个关键字,range 是一个函数,它以值的范围作为参数来操作循环体。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-13
          • 1970-01-01
          • 2015-08-04
          • 2015-08-02
          • 2013-04-09
          • 1970-01-01
          • 1970-01-01
          • 2021-06-03
          相关资源
          最近更新 更多