如果我在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)
与其他一些语言不同,+=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)