Python中表达式和语句有什么区别?
在Python中,表达式和语句有什么区别呢?
19 个回答
138
表达式 -- 来自 新牛津美式词典:
表达式:数学 是一组符号,它们一起表示一个数量:比如,圆的周长的表达式是 2πr。
简单来说:表达式至少会产生一个值。
在 Python 中,表达式的内容在 Python 语言参考 中有详细介绍。一般来说,Python 中的表达式是由合法的语法组合而成,包括 原子、主要部分 和 运算符。
表达式的例子:
字面量 和与 运算符 以及 内置函数 或用户自定义函数的调用的语法正确组合:
>>> 23
23
>>> 23l
23L
>>> range(4)
[0, 1, 2, 3]
>>> 2L*bin(2)
'0b100b10'
>>> def func(a): # Statement, just part of the example...
... return a*a # Statement...
...
>>> func(3)*4
36
>>> func(5) is func(a=5)
True
语句来自维基百科:
在计算机编程中,语句可以被视为命令式编程语言中最小的独立元素。一个程序是由一个或多个语句按顺序组成的。一个语句会包含内部组件(例如,表达式)。
简单来说:语句是做某事的,通常由表达式(或其他语句)组成。
不过,“语句做某事”和“表达式产生一个值”之间的区别可能会变得模糊:
- 列表推导式 被认为是“表达式”,但它们有循环结构,因此也做某事。
if
通常是一个语句,比如if x<0: x=0
,但你也可以有一个 条件表达式,像x=0 if x<0 else 1
,这也是表达式。在其他语言中,比如 C,这种形式被称为运算符,像这样x=x<0?0:1;
- 你可以通过编写函数来创建自己的表达式。
def func(a): return a*a
在使用时是一个表达式,但在定义时是由语句组成的。 - 一个返回
None
的表达式在 Python 中是一个过程:def proc(): pass
从语法上讲,你可以把proc()
当作一个表达式,但这可能是个错误…… - 与 C 语言相比,Python 在表达式和语句之间的区别上更严格。在 C 中,任何表达式都是合法的语句。你可以写
func(x=2);
这算是表达式还是语句?(答案:表达式作为语句使用,并带有副作用。)在 Python 中,func(x=2)
中的赋值语句x=2
只在调用func
时将命名参数a
设置为 2,这比 C 的例子要更有限。
139
虽然这和Python没有关系:
一个 表达式
是用来计算出一个值的。
而一个 语句
则是用来执行某个操作的。
>>> x + 2 # an expression
>>> x = 1 # a statement
>>> y = x + 1 # a statement
>>> print y # a statement (in 2.x)
2