1. 程式人生 > >UnboundLocalError: local variable 'XXX' referenced before assignment

UnboundLocalError: local variable 'XXX' referenced before assignment

這個問題很囧,在外面定義了一個變數 xxx ,然後在python的一個函式裡面引用這個變數,並改變它的值,結果報錯local variable 'xxx' referenced before assignment,程式碼如下:

  1. xxx = 23
  2. def PrintFileName(strFileName):   
  3.     if xxx == 23:  
  4.         print strFileName  
  5.         xxx = 24
  6. PrintFileName("file")  

      錯誤的意思就是xxx這個變數在引用前還沒有定義,這上面不是定義了麼?但是後來我把xxx = 24這句去掉之後,又沒問題了,後來想起python中有個global關鍵字是用來引用全域性變數的,嘗試了一下,果然可以了:

  1. xxx = 23
  2. def PrintFileName(strFileName):  
  3.     global xxx  
  4.     if xxx == 23:  
  5.         print strFileName  
  6.         xxx = 24
  7. PrintFileName("file")  

      原來在python的函式中和全域性同名的變數,如果你有修改變數的值就會變成區域性變數,在修改之前對該變數的引用自然就會出現沒定義這樣的錯誤了,如果確定要引用全域性變數,並且要對它修改,必須加上global關鍵字。