许多人认为赋值就是表达式,特别是在像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
是因为分配的地方。如果可以将赋值埋在一些较大的表达式/语句中,则甚至可能比以前更加令人困惑。