【发布时间】:2011-10-24 04:09:52
【问题描述】:
每个人都知道在 Python 中赋值不会返回值,大概是为了避免在通常只是比较的情况下对 if 语句进行赋值:
>>> if a = b:
File "<stdin>", line 1
if a = b:
^
SyntaxError: invalid syntax
>>> if a == b:
... pass
...
出于同样的原因,人们可能会怀疑同一语句上的多个赋值也是语法错误。
事实上,a = (b = 2) 不是一个有效的表达式:
>>> a = (b = 2)
File "<stdin>", line 1
a = (b = 2)
^
SyntaxError: invalid syntax
所以,我的问题是:为什么 a = b = 2 在 Python 中工作,因为它在赋值语句有值的其他语言中工作,比如 C?
>>> a = b = c = 2
>>> a, b, c
(2, 2, 2)
是否记录了这种行为?我在赋值语句文档中找不到任何关于此的内容:http://docs.python.org/reference/simple_stmts.html#assignment-statements
【问题讨论】:
标签: python variable-assignment