现在快到午夜了,我突然有一个问题出现在脑海里,那就是“for循环”是语句还是函数。
我一直认为它是语句,但是我在谷歌上搜寻时发现也有称其为函数的结果。那么它到底是什么?在这种情况下,函数和语句之间有什么区别呢?
现在快到午夜了,我突然有一个问题出现在脑海里,那就是“for循环”是语句还是函数。
我一直认为它是语句,但是我在谷歌上搜寻时发现也有称其为函数的结果。那么它到底是什么?在这种情况下,函数和语句之间有什么区别呢?
一个 for 循环不是通常意义下的函数,它是一种特殊的语句,称为流程控制结构。
语句 是一条命令。它执行某些操作。在大多数编程语言中,语句不返回值。例如:
print "Hello World"
函数是程序中的子程序,可以在程序的其他地方调用。函数通常(但不一定)返回值。例如:
function(a) { return a * 2 }
一个控制结构,也被称为复合语句,是用于指导执行流程的语句。例如:
if (condition) then { branch_1 } else { branch_2 }
for (i = 0; i < 10; i += 1) { ... }
2 + 2
所有示例均为伪代码,不与任何特定语言相关。还要注意这些不是互斥的类别,它们可以重叠。
for
循环既是语句又是控制结构,对吗?函数并不需要返回值——它也可以用于简单执行,但是以某种方式进行,其中某些内容是可变的,并且产品基于特定情况。 - Purag您选择的三个语言标签中,我只熟悉Python,但我相信许多其他编程语言对这些概念有类似的看法。这里的所有示例代码都是Python。
语句是一个被执行的东西;一种语言实现可以理解的“做某事的指令”。例如:
print "Hello World"
pass
def foo(n):
return n + 1
if condition:
print 'yay'
else:
print 'doh'
上面的代码块包含一个打印语句,一个pass语句,一个函数定义语句和一个if/else语句。注意,函数定义和if/else语句都是复合语句;它们包含其他语句(可能有许多语句,也可能有其他复合语句)。
表达式是可以求值以产生值的东西。例如:
1
"foo"
2 * 6
function(argument)
None
function(argument)
中,function
和argument
也都是表达式。None
这样毫无趣味的值)。语句是一条命令,它没有值,因此它在表达式的一部分中是没有意义的。None
的函数通常以这种方式使用:write_to_disk(result)
foo
是一个表达式,我可以写1 + foo
,虽然它可能会导致类型错误,但至少意义上是正确的。如果foo
是一个语句,那么1 + foo
通常是一个解析错误。语言实现甚至无法理解你试图说什么。
def
语句创建一个函数,函数调用是一个表达式。创建函数后绑定到函数的名称也是一个表达式。但是函数本身是一个值,从技术上讲它不完全是一个表达式,但肯定不是语句。
for thing in collection:
do_stuff(thing)
看起来像是一个语句(复合语句,比如if语句)。为了证明这一点,以下内容毫无意义(并且是解析错误):
1 + for thing in collection:
do_stuff(thing)
break
(有时候Ruby会因为将它们用作表达式而给出解析错误,但并非总是:http://carboni.ca/blog/p/Statements-in-Ruby)。 - Ben这篇答案与Python 2.7.2相关。摘自python教程:
"4. 更多控制流工具
4.2. for语句: Python中的for语句与C或Pascal中您可能习惯的有些不同。Python的for语句迭代任何序列(列表或字符串)中出现的项目,按它们在序列中出现的顺序进行迭代,而不总是迭代数字的算术进度(如Pascal中),或者给用户定义迭代步骤和停止条件的能力(如C中)。