Python中表达式和语句有什么区别?

450 投票
19 回答
291954 浏览
提问于 2025-04-16 10:12

在Python中,表达式和语句有什么区别呢?

19 个回答

138

表达式 -- 来自 新牛津美式词典

表达式:数学 是一组符号,它们一起表示一个数量:比如,圆的周长的表达式是 2πr。

简单来说:表达式至少会产生一个值。

在 Python 中,表达式的内容在 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

语句来自维基百科:

在计算机编程中,语句可以被视为命令式编程语言中最小的独立元素。一个程序是由一个或多个语句按顺序组成的。一个语句会包含内部组件(例如,表达式)。

维基百科上的 Python 语句

简单来说:语句是做某事的,通常由表达式(或其他语句)组成。

Python 语言参考详细介绍了 简单语句复合语句

不过,“语句做某事”和“表达式产生一个值”之间的区别可能会变得模糊:

  • 列表推导式 被认为是“表达式”,但它们有循环结构,因此也做某事。
  • 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
323

表达式只包含标识符字面量运算符。运算符包括算术运算符和布尔运算符,还有函数调用运算符()、订阅运算符[]等。这些表达式可以简化为某种“值”,这个值可以是任何Python对象。举个例子:

3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7

语句(见12)则是构成一行(或多行)Python代码的所有内容。需要注意的是,表达式也是语句的一种。举个例子:

# all the above expressions
print 42
if x: do_y()
return
a = 7

撰写回答