ITPub博客

首页 > 应用开发 > IT综合 > Python的UnboundLocalError: local variable 'xxx' referenced before assignment

Python的UnboundLocalError: local variable 'xxx' referenced before assignment

IT综合 作者:gavinlee 时间:2017-07-30 22:25:58 0 删除 编辑
http://blog.csdn.net/onlyanyz/article/details/45009697

UnboundLocalError: local variable 'xxx' referenced before assignment

如下代码片所示:


[python] view plain copy
  1. n=0  
  2. def func():  
  3.     print n  
  4.     n+=1  
  5.   
  6. func()  

结果运行时就出现了上述错误。


这是因为在函数内部对变量赋值进行修改后,该变量就会被python解释器认为是局部变量而非全局变量,当程序执行到n+=1的时候,因为这条语句是给n赋值,所以n成为了局部变量,那么在执行print n的时候,因为n这个局部变量还没有定义,自然就会抛出这样的错误。

考虑如下代码片:


[python] view plain copy
  1. n=0  
  2. def func():  
  3.     print n  
  4.   
  5. func()  
因为函数内部并没有再次对n赋值,所以这时,print n打印的就是全局变量n的值。


那么,我们怎样才能达到在函数内部先打印,再赋值的操作呢?结论就是使用global关键字,在函数内部先声明n这个变量是全局变量。代码如下:


[python] view plain copy
  1. n=0  
  2. def func():  
  3.     global n  
  4.     print n  
  5.     n+=1  
  6.   
  7. func()  
  8. print n  
结果如下:



[python] view plain copy
  1. 0  
  2. 1  
  3. [Finished in 1.0s]  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/310974/viewspace-2142809/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    51
  • 访问量
    783085