大家好,又见面了,我是你们的朋友全栈君。
1.错误概述
今天练习类似于如下代码的时候遇到了一个UnboundLocalError错误,该错误的内容翻译过来就是:局部变量total没有定义就使用了。
total = 10
def change():
total = total + 1
print(total)
change()
D:\>python test.py
Traceback (most recent call last):
File "test.py", line 5, in <module>
change()
File "test.py", line 3, in change
total = total + 1
UnboundLocalError: local variable 'total' referenced before assignment
2.原因分析
如果在一个范围内,对一个变量进行赋值,那么这个变量就会被认为是局部变量,就像在change()这个函数范围之内,我们对total这个变量进行了重新赋值:total=total+1,那么编译器就会认为total这个变量是一个局部变量,而这个赋值表达式实际上是从右向左进行的,也就是说,在进行total+1运算的时候,total并没有被定义,所以就爆出了这个UnboundLocalError错误。
3.解决办法
在对total进行赋值之前,先用global关键字将total变成一个全局变量,这样设置之后,编译器就会看到total已经在函数之外定义过了,所以就不会报错。代码如下:
total = 10
def change():
global total
total = total + 1
print(total)
change()
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147979.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...