在Python中,表达式和语句之间的区别是什么?
当前回答
尽管这与Python无关:
表达式的计算结果是一个值。 语句做一些事情。
>>> x + 2 # an expression
>>> x = 1 # a statement
>>> y = x + 1 # a statement
>>> print y # a statement (in 2.x)
2
其他回答
表达式是返回值的语句。因此,如果它可以出现在赋值操作的右侧,或者作为方法调用的参数,那么它就是一个表达式。 有些代码可以是表达式,也可以是语句,这取决于上下文。当这两者模棱两可时,语言可能有一种方法来区分它们。
表达式只包含标识符、文字和操作符,其中操作符包括算术运算符和布尔运算符、函数调用运算符()、订阅运算符[]等,并且可以简化为某种“值”,可以是任何Python对象。例子:
3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7
另一方面,语句(参见1,2)是可以组成一行(或几行)Python代码的所有内容。注意,表达式也是语句。例子:
# all the above expressions
print 42
if x: do_y()
return
a = 7
尽管这与Python无关:
表达式的计算结果是一个值。 语句做一些事情。
>>> x + 2 # an expression
>>> x = 1 # a statement
>>> y = x + 1 # a statement
>>> print y # a statement (in 2.x)
2
表达式是可以简化为值的东西,例如“1+3”是一个表达式,但“foo = 1+3”不是。
很容易检查:
print(foo = 1+3)
如果它不起作用,它就是一个语句,如果它起作用,它就是一个表达式。
另一种说法可以是:
class Foo(Bar): pass
因为它不能被简化为一个值。
前面的语句可以改变Python程序的状态:创建或更新变量,定义函数,等等。
表达式只是返回一些值,不能改变函数中的全局状态或局部状态。
但现在我们得到了:=,它是一个外星人!