如果我在python中编写以下内容,我会收到语法错误,为什么会这样?
a = 1
b = (a+=1)
我正在使用python版本2.7
运行时我得到的结果如下:
>>> a = 1
>>> b = (a +=1)
File "<stdin>", line 1
b = (a +=1)
^
SyntaxError: invalid syntax
>>>
答案 0 :(得分:7)
与其他一些语言不同,Python中的赋值(包括增强赋值,如+=
)是而不是一个表达式。这也会影响到这样的事情:
(a=1) > 2
在C和其他几种语言中是合法的。
通常给出这个的原因是因为它有助于防止这类错误:
if a = 1: # instead of ==
pass
else:
pass
因为赋值不是表达式,所以这是Python中的SyntaxError。在等效的C代码中,它是一个微妙的错误,变量将被修改而不是检查,检查将始终为真(在C中,就像在Python中一样,非零整数总是真的,并且else块永远不会触发。
你可以仍然在Python中进行链式赋值,所以这可行:
>>> a = 1
>>> a = b = a+1
>>> a
2
>>> b
2
答案 1 :(得分:4)
a +=1
是Python中的语句,您无法为变量分配语句。虽然它在C,PHP等语言中是有效的语法,但不是Python。
b = (a+=1)
等效版本将是:
>>> a = 1
>>> a += 1
>>> b = a
答案 2 :(得分:2)
正如@Ashwini所说,a+=1
是一项任务,而不是一项价值。您无法将其分配给b
或任何变量。你可能想要的是:
b = a+1
答案 3 :(得分:1)
这里提供的所有答案都很好,我只想补充一点,你可以在单行表达式中实现你想要的东西,但是以不同的方式写出来:
b, a = a+1, a+1
在这里你做差不多同样的事情:将a
递增1,并将a+1
的值分配给b - 我告诉'差不多',因为这里我们有两个总结而不是一个。