该错误的内容翻译过来就是:局部变量total没有定义就使用了。
现象
total = 5
def change():
total = total + 1
print total
change()
执行这个函数,会提示“UnboundLocalError: local variable 'total' referenced before assignment”
原因
如果在一个范围内,对一个变量进行赋值,那么这个变量就会被认为是局部变量,就像在change()这个函数范围之内,我们对total这个变量进行了重新赋值:total=total+1,那么编译器就会认为total这个变量是一个局部变量,而这个赋值表达式实际上是从右向左进行的,也就是说,在进行total+1运算的时候,total并没有被定义,所以就出了这个UnboundLocalError错误
解决办法
在total赋值之前,先用global 关键字将total变为一个全局变量,这样total就被定义过了,可以执行了,如下:
total = 10
def change():
global total
total = total + 1
print total
change()
网友评论