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


当前回答

语句包含关键字。

表达式不包含关键字。

打印“hello”是语句,因为打印是一个关键字。

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

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

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

其他回答

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

很容易检查:

print(foo = 1+3)

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

另一种说法可以是:

class Foo(Bar): pass

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

声明:

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

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

表达式:

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

val a: Int = 5 + 5 #yields 10

语句包含关键字。

表达式不包含关键字。

打印“hello”是语句,因为打印是一个关键字。

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

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

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

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

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