在Python中,表达式和语句之间的区别是什么?


当前回答

表达式是可以简化为值的东西,例如“1+3”是一个表达式,但“foo = 1+3”不是。

很容易检查:

print(foo = 1+3)

如果它不起作用,它就是一个语句,如果它起作用,它就是一个表达式。

另一种说法可以是:

class Foo(Bar): pass

因为它不能被简化为一个值。

其他回答

表达式转换为值。

语句消耗值*以产生结果**。


*包括一个空值,如:print()或pop()。

**这个结果可以是任何改变某事的动作;例如,改变内存(x = 1)或改变屏幕上的某些东西(print("x"))。


注意事项:

因为语句可以返回结果,所以它可以是表达式的一部分。 一个表达式可以是另一个表达式的一部分。

表达式是可以简化为值的东西,例如“1+3”是一个表达式,但“foo = 1+3”不是。

很容易检查:

print(foo = 1+3)

如果它不起作用,它就是一个语句,如果它起作用,它就是一个表达式。

另一种说法可以是:

class Foo(Bar): pass

因为它不能被简化为一个值。

表达式只包含标识符、文字和操作符,其中操作符包括算术运算符和布尔运算符、函数调用运算符()、订阅运算符[]等,并且可以简化为某种“值”,可以是任何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

Python将表达式称为“表达式语句”,所以这个问题可能还没有完全形成。

一条语句包含你在Python中可以做的任何事情:计算值、赋值、删除变量、打印值、从函数返回、引发异常等等。完整的名单在这里:http://docs.python.org/reference/simple_stmts.html#

表达式语句仅限于调用函数(例如, Math.cos (theta)”)、运算符(例如“2+3”)等来生成一个值。