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

What is the difference between an expression and a statement in Python?

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


表达式只包含标识符、文本和运算符,其中运算符包括算术和布尔运算符、函数调用运算符()、订阅运算符[]等,并且可以简化为某种"值",可以是任何python对象。实例:

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

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

1
2
3
4
5
# all the above expressions
print 42
if x: do_y()
return
a = 7


表达式——来自我的字典:

expression: Mathematics a collection
of symbols that jointly express a
quantity : the expression for the
circumference of a circle is 2πr.

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

在python中,表达式在python语言引用中被广泛覆盖,通常,python中的表达式由原子、主元素和运算符的语法合法组合组成。

维基百科的python表达式

表达式示例:

与运算符和内置函数或用户编写函数的调用的文字和语法正确组合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> 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

维基百科的声明:

In computer programming a statement
can be thought of as the smallest
standalone element of an imperative
programming language. A program is
formed by a sequence of one or more
statements. A statement will have
internal components (e.g.,
expressions).

维基百科的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()作为表达式,但这可能是一个错误…
  • python比say c对表达式和语句之间的区别更严格。在C语言中,任何表达都是法律声明。你可以用func(x=2);这是表达式还是语句?(回答:用作有副作用的陈述的表达式)func(x=2)的形式在python中是非法的(或者至少它有不同的含义func(a=3)将命名参数a设置为3)


尽管这与python无关:

expression的计算结果是一个值。一个statement做了一些事情。

1
2
3
4
>>> x = 1
>>> y = x + 1     # an expression
>>> print y       # a statement (in 2.x)
2


语句表示操作或命令,例如打印语句、分配语句。

1
print 'hello', x = 1

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

1
5 * 5 # yields 25

最后,表达式语句

1
print 5*5

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

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

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

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


    一个表达式是可以减少为一个值的东西,例如"1+3""foo = 1+3"

    很容易检查:

    1
    print foo = 1+3

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

    另一种说法可能是:

    1
    class Foo(Bar): pass

    因为它不能减少到一个值。


    声明:

    语句是执行某项操作或命令。例如:否则,循环等

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

    表达式:

    表达式是值、运算符和文本的组合,可以产生一些东西。

    1
    val a: Int = 5 + 5 #yields 10


    表达: