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

gavinlee發表於2017-07-30
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()  

結果執行時就出現了上述錯誤。


這是因為在函式內部對變數賦值進行修改後,該變數就會被直譯器認為是區域性變數而非全域性變數,當程式執行到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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章