Ale*_*kov 12 javascript ruby python
这几乎是午夜,我脑子里只有一个问题是"for loop"一个声明或一个函数.
我一直认为这是一个声明,但我做了谷歌搜索,它是一个功能,确实有结果.那是什么?在那种情况下,函数和语句之间有什么区别?
Ben*_*Lee 19
for循环通常不是函数,它是一种称为流控制结构的特殊语句.
一个说法是命令.它做了一些事情.在大多数语言中,语句不返回值.例:
print "Hello World"
Run Code Online (Sandbox Code Playgroud)
一个功能是可以在程序的其他地方调用子程序.函数通常(但不一定)返回值.例:
function(a) { return a * 2 }
Run Code Online (Sandbox Code Playgroud)
甲控制结构,也称为一个复合语句,是用于指导执行的流程的声明.例子:
if (condition) then { branch_1 } else { branch_2 }
Run Code Online (Sandbox Code Playgroud)
for (i = 0; i < 10; i += 1) { ... }
Run Code Online (Sandbox Code Playgroud)
另外值得注意的是,表达式是一段评估值的代码.例:
2 + 2
Run Code Online (Sandbox Code Playgroud)
所有示例都是伪代码,不依赖于任何特定语言.另请注意,这些不是排他性的类别,它们可以重叠.
出你所选择的三个语标签的,我只感到非常familliar与Python,但我相信其他很多语言都提供了这些概念了类似的观点.这里的所有示例代码都是Python.
一个说法是,是执行的事情; 语言实现理解的"做某事的指示".例如
print "Hello World"
pass
def foo(n):
return n + 1
if condition:
print 'yay'
else:
print 'doh'
Run Code Online (Sandbox Code Playgroud)
上面的块包含print语句,pass语句,函数定义语句和if/else语句.注意,函数定义和if/else语句是复合语句; 它们包含其他语句(可能包含许多语句,也可能包含其他复合语句).
的表达的东西,可以进行评估,以产生一个值.例如
1
"foo"
2 * 6
function(argument)
None
Run Code Online (Sandbox Code Playgroud)
上面包含一个数字文字表达式,一个字符串文字表达式,一个涉及数字运算符的表达式,一个函数调用表达式和文字无表达式.除了文字和变量之外,表达式由其他表达式组成.在function(argument),function而且argument也都表达.
关键的区别在于语句是指示语言实现"去做某事"的指令.表达式被评估为一个值(这可能需要语言实现以"在路上做某事").
这样做的结果是,任何地方,你看到的值(包括表情),你可以代替任何其他表达式,你仍然会得到的东西,使某种意义.它可能无法编译,或在运行时或其他任何情况下抛出异常,但至少在某种程度上,您可以理解正在发生的事情.
语句永远不会出现在表达式中(我相信在某些意义上,这在Ruby和Javascript中不是这样,因为它们允许使用文字代码块和函数,然后将它们用作整个值,函数和代码块包含语句;但这与我所说的有点不同).表达式必须具有一个值(即使它是一个无趣的表达式None).声明是一个命令; 将它作为表达式的一部分出现是没有意义的,因为它没有任何价值.
许多语言也允许将表达式用作语句.这通常的意思是"评估这个表达式以得到一个值,然后扔掉它".在Python中,总是返回的函数None通常以这种方式使用:
write_to_disk(result)
Run Code Online (Sandbox Code Playgroud)
它被用来作为一个"命令",所以它看起来像一个声明,但在技术上它是一个表达式,我们只是不使用它的计算结果为任何东西的价值.您可以认为"裸表达式"是语言中可能的语句之一(并且它们通常以这种方式解析).
有些语言虽然区分了必须使用的函数,比如没有返回值的语句(通常称为过程)和像表达式一样使用的函数,并且使用像语句这样的函数给出错误或警告,并且肯定会给你一个错误使用过程作为表达式.
所以,如果foo是一个表达式,我可以写1 + foo,虽然它可能导致类型错误,但它至少有意义.如果foo是语句,则1 + foo通常是解析错误; 语言实现甚至无法理解你想说的内容.
一个功能,另一方面,是可以调用的事情.它本身并不是表达式或声明.在Python中,您使用def语句来创建函数,函数调用是表达式.创建函数后绑定到函数的名称也是表达式.但是函数本身就是一个值,当你获得技术时它并不是一个表达式,但肯定不是一个声明.
所以,对于循环.这是Python中的for循环:
for thing in collection:
do_stuff(thing)
Run Code Online (Sandbox Code Playgroud)
看起来像一个语句(复合语句,如if语句).为了证明这一点,这完全没有意义(并且是一个解析错误):
1 + for thing in collection:
do_stuff(thing)
Run Code Online (Sandbox Code Playgroud)
但是在某些语言中,for循环的等价物是一个表达式,并且有一个值,您可以尝试添加它1.在某些语言中,它甚至是一个函数,而不是语言中的特殊语法.
| 归档时间: |
|
| 查看次数: |
8541 次 |
| 最近记录: |