UnboundLocalError: local variable 'total' referenced before assignment

该错误的内容翻译过来就是:局部变量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()

你可能感兴趣的:(UnboundLocalError: local variable 'total' referenced before assignment)