为什么b =(a + = 1)是python中无效的语法?

Har*_*Har 4 python python-2.7

如果我在python中编写以下内容,我会收到语法错误,为什么会这样?

a = 1
b = (a+=1)
Run Code Online (Sandbox Code Playgroud)

我使用的是python版本2.7

我运行它时得到的结果如下:

>>> a = 1
>>> b = (a +=1)
  File "<stdin>", line 1
    b = (a +=1)
        ^
SyntaxError: invalid syntax
>>>
Run Code Online (Sandbox Code Playgroud)

lvc*_*lvc 7

与其他一些语言不同,+=Python中的赋值(包括扩充赋值)不是表达式.这也会影响到这样的事情:

(a=1) > 2
Run Code Online (Sandbox Code Playgroud)

这在C和其他几种语言中是合法的.

通常给出这个的原因是因为它有助于防止这样的一类错误:

if a = 1: # instead of ==
    pass
else:
    pass
Run Code Online (Sandbox Code Playgroud)

由于赋值不是表达式,因此这是Python中的SyntaxError.在等效的C代码中,它是一个微妙的错误,变量将被修改而不是检查,检查将始终为真(在C中,像在Python中,非零整数总是真的),而else块可以从不开火.

您仍然可以在Python中进行链式赋值,因此这有效:

>>> a = 1 
>>> a = b = a+1
>>> a
2
>>> b
2
Run Code Online (Sandbox Code Playgroud)