许多人认为赋值就是表达式,特别是在像Python这样的语言中,条件中允许 任何
值(不仅是某些布尔类型的值)都是容易出错的。大概圭多(Guido)在那种感觉中。经典错误是:
if x = y: # oops! meant to say ==
在Python中,这种情况也比在C语言中更为复杂,因为在Python中,对变量的第一个赋值也是其声明。例如:
def f(): print xdef g(): x = h() print x
在这两个函数中,“
printx”行做不同的事情:一个是指全局变量
x,另一个是指局部变量
x。在
x中
g是因为分配的地方。如果可以将赋值埋在一些较大的表达式/语句中,则甚至可能比以前更加令人困惑。



