'for loop'是一个函数吗?

时间:2017-03-17 12:30:35

标签: python c syntax

'for loop'是一个函数吗?如果没有,那是什么?它是如何工作的?

C:

中的示例
for(int i=0; i<32; i++)
{
    ...
}

Python中的示例:

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

6 个答案:

答案 0 :(得分:2)

不,整个事物被称为“迭代声明”。包含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

答案 1 :(得分:1)

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

C book n1256 6.8.5.3 for语句

  

声明

     

for(clause-1; expression-2; expression-3)

     

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

答案 2 :(得分:1)

  

基本上,任何具有可迭代方法的对象都可以   用于Python中的 for循环。即使没有,也要字符串   可迭代的方法 - 但我们不会在这里继续。有一个   可迭代方法基本上意味着数据可以在列表中呈现   形式,有序地存在多个值。您可以   通过使用next()和iter()创建一个对象来定义自己的迭代   方法

您可以从For loop Python wiki查看更多详情。

答案 3 :(得分:1)

for循环不是函数;相反,它是一个具有条件标题的迭代语句(例如:计数器&#34; i&#34;不应大于或小于任何数字n,而我每次循环迭代都会增加一定数量)。条件头不应被视为for循环的参数。 for循环还有一个用大括号括起来的代码体(这里只提到C语言)。

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

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

所以我们不能有这样的东西:

OPEN FOR
  'SELECT OUTRECORD
    FROM (SELECT DISTINCT ' || COL ||
           ' FROM COMPARE_2018_P1
          MINUS
          SELECT DISTINCT ' || COL ||
           ' FROM COMPARE_2017_P1)'; 

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

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

希望这有帮助。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

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