为什么 Python 赋值是语句而不是表达式?如果它是一个返回赋值右侧值的表达式,那么在某些情况下它会允许更少冗长的代码。有没有我看不到的问题?
例如:
# lst is some sequence
# X is come class
x = X()
lst.append(x)
可以改写为:
lst.append(x = X())
好吧,准确地说,上面的方法不起作用,因为 x
将被视为关键字参数。但是另一对括号(或关键字参数的另一个符号)可以解决这个问题。
原文由 max 发布,翻译遵循 CC BY-SA 4.0 许可协议
许多人认为将赋值作为表达式,尤其是在像 Python 这样的语言中,在条件中允许 任何 值(而不仅仅是某些布尔类型的值)是容易出错的。大概 Guido 是那些有这种感觉的人之一。经典错误是:
这种情况在 Python 中也比在像 C 这样的语言中复杂一点,因为在 Python 中,对变量的第一个赋值也是它的声明。例如:
在这两个函数中,“
print x
”行做了不同的事情:一个引用全局变量x
,另一个引用局部变量x
.x
在g
是本地的,因为分配。如果可以将赋值埋在一些更大的表达式/语句中,这可能会更加混乱(比现在更混乱)。