UnboundLocalError: local variable 'xxx' referenced before assignment
如下代码片所示:
- n=0
- def func():
- print n
- n+=1
- func()
结果运行时就出现了上述错误。
这是因为在函数内部对变量赋值进行修改后,该变量就会被python解释器认为是局部变量而非全局变量,当程序执行到n+=1的时候,因为这条语句是给n赋值,所以n成为了局部变量,那么在执行print n的时候,因为n这个局部变量还没有定义,自然就会抛出这样的错误。
考虑如下代码片:
- n=0
- def func():
- print n
- func()
那么,我们怎样才能达到在函数内部先打印,再赋值的操作呢?结论就是使用global关键字,在函数内部先声明n这个变量是全局变量。代码如下:
- n=0
- def func():
- global n
- print n
- n+=1
- func()
- print n
- 0
- 1
- [Finished in 1.0s]