最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment

代码及报错如下

最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment_第1张图片

解决

很多人都非常困惑,为什么在test3中可以直接输出a,但是在test3中,使用a+=1的时候,就直接报错呢?

首先,我们需要明确一个概念,就是全局变量与局部变量。如下图,大家觉得打印的a会是1还是3
最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment_第2张图片

答案是1,因为定义在test3外部的a是全局变量,而定义在test3内部的a是局部变量。此时,外面这个a与里面这个a没有任何关系。只不过是名字一样而已。

其次,我们需要明确在函数内部是可以直接访问到全局变量的,所以上图中test1是可以直接输出a,b的。但是如果是直接在test2中实现a+=1时,其实也就演变为a=a+1,此时,在代码右边的a仍然是可以访问全局变量的,但是代码左边的a却会认为在定义局部变量,而局部变量没有事先定义。所以报错。

那解决方法有两种,一种是声明test2内部的变量为全局变量
最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment_第3张图片
另一种是在test2里面先定义局部变量
最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment_第4张图片
就OK啦~

你可能感兴趣的:(少女的错误集,python)