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

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

266850 次浏览

表达式是可以简化为值的东西,例如"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

另一方面,语句(参见)是可以组成一行(或几行)Python代码的所有内容。注意,表达式也是语句。例子:

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

尽管这与Python无关:

expression的计算结果是一个值。 statement做一些事情
>>> 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”)等来生成一个值。< / p >

表达式——来自新牛津美语词典:

表达式:数学一个集合 这些符号共同表达了 的表达式 圆的周长为2πr

总的来说:表达式至少产生一个值。

一般来说,Python中的表达式由语法上合法的原子初选运营商组合组成。

Wikipedia中的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

声明来自维基百科:

在计算机编程中,一个语句 可以被认为是最小的 命令的独立元素 编程语言。程序是 由一个或多个序列组成的 语句。声明将包含 内部组件(例如, 表达式). < / p >

来自维基百科的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中的一个过程:从语法上讲,你可以使用proc()作为表达式,但这可能是一个错误…
  • Python在表达式和语句之间的区别上比C更严格一些。在C语言中,任何表达式都是合法语句。你可以有func(x=2);是表达式还是语句?(答:作为带有副作用的语句使用的表达式。) Python中func(x=2)函数调用内部的x=2赋值语句仅在func调用中将命名参数a设置为2,比C示例的限制更大。

语句包含关键字。

表达式不包含关键字。

print "hello"是语句,因为print是一个关键字。

"hello"是一个表达式,但是列表压缩反对这个表达式。

下面是一个表达式语句,它在没有列表理解的情况下是正确的:

(x*2 for x in range(10))

语句表示动作或命令,例如打印语句,赋值语句。

print 'hello', x = 1

表达式是产生结果值的变量、操作和值的组合。

5 * 5 # yields 25

最后,表达式语句

print 5*5

表达式:

  • 表达式由objectsoperators组合而成。
  • 表达式有一个值,值有一个类型。
  • 简单表达式的语法:<object><operator><object>

2.0 + 3是一个表达式,计算结果为5.0,并且有一个与之相关的类型float

语句

语句由表达式组成。它可以跨越多行。

表达式是某种东西,而语句是某种东西。
表达式也是语句,但它必须有一个返回值。

>>> 2 * 2          #expression
>>> print(2 * 2)     #statement

PS:解释器总是打印出所有表达式的值。

  1. 表达式是返回值的语句。因此,如果它可以出现在赋值操作的右侧,或者作为方法调用的参数,那么它就是一个表达式。
  2. 有些代码可以是表达式,也可以是语句,这取决于上下文。当这两者模棱两可时,语言可能有一种方法来区分它们。

声明:

语句是执行某些操作的动作或命令。例:if - else,循环…等等

val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")

表达式:

表达式是值、操作符和字面量的组合,可以产生一些东西。

val a: Int = 5 + 5 #yields 10

前面的语句可以改变Python程序的状态:创建或更新变量,定义函数,等等。

表达式只是返回一些值,不能改变函数中的全局状态或局部状态。

但是现在我们得到:=,它是一个外星人!

表达式总是求值,而语句则不是。

如。

变量声明和赋值是语句,因为它们不返回值

const list = [1,2,3];
这里我们有两个操作数——左边是一个变量sum,右边是一个表达式。 整个代码是一个语句,但右边的位是一个表达式,因为这段代码返回一个值
const sum = list.reduce((a, b)=> a+ b, 0);

函数调用、算术运算和布尔运算都是表达式的好例子。

表达式通常是语句的一部分。

通常需要区分这两者,以表明我们是否需要一段代码来返回一个值。

表达式转换为一个值。

声明消耗一个值*来产生一个结果**。


*包含一个空值,如:print()pop()

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


注意事项:

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