为什么 Python 赋值是语句而不是表达式?如果它是一个返回赋值右侧值的表达式,那么在某些情况下它会允许更少冗长的代码。有什么我看不到的问题吗?
例如:
# lst is some sequence
# X is come class
x = X()
lst.append(x)
可以改写为:
lst.append(x = X())
好吧,准确地说,上面的方法不起作用,因为 x
将被视为关键字参数。但是另一对括号(或关键字参数的另一个符号)会解决这个问题。
最佳答案
很多人认为赋值是表达式,特别是在 Python 这样的语言中,在条件中允许 any 值(不仅仅是某些 bool 类型的值)容易出错。大概Guido是/曾经是那些有这种感觉的人之一。经典错误是:
if x = y: # oops! meant to say ==
在 Python 中的情况也比在 C 之类的语言中要复杂一些,因为在 Python 中,对变量的第一个赋值也是它的声明。例如:
def f():
print x
def g():
x = h()
print x
在这两个函数中,“print x
”行做了不同的事情:一个引用全局变量x
,另一个引用局部变量 x
。 g
中的 x
因为赋值是本地的。如果可以将赋值隐藏在一些更大的表达式/语句中,这可能会更加困惑(比现在更加困惑)。
关于python - 为什么 Python 赋值不返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869770/