为什么Python赋值是语句而不是表达式?如果它是一个返回赋值右侧值的表达式,则在某些情况下它将允许冗长得多的代码。有没有我看不到的问题?
例如:
# lst is some sequence # X is come class x = X() lst.append(x)
可能被改写为:
lst.append(x = X())
好吧,确切地说,上面的方法不起作用,因为x它将被视为关键字参数。但是另一对括号(或关键字参数的另一个符号)将解决该问题。
x
许多人认为赋值就是表达式,特别是在像Python这样的语言中,条件中允许 任何 值(不仅是某些布尔类型的值)都是容易出错的。大概圭多(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。在x中g是因为分配的地方。如果可以将赋值埋在一些较大的表达式/语句中,则甚至可能比以前更加令人困惑。
print x
g