問題發現
xxx = 23 def PrintFileName(strFileName): if xxx == 23: print strFileName xxx = 24 PrintFileName("file")
報錯
Traceback (most recent call last): File "C:/Users/Desktop/del.py", line 7, in <module> PrintFileName("file") File "C:/Users/jihite/Desktop/del.py", line 3, in PrintFileName if xxx == 23: UnboundLocalError: local variable 'xxx' referenced before assignment
意思說局部變量‘xxx’前邊沒有定義,但是最前面不是定義了嗎。注意這里提示是局部變量,一開始定義的為全局變量。如果這里定義的就是全局變量可以通過關鍵字global來說明
xxx = 23 def PrintFileName(strFileName): if xxx == 23: global xxx print strFileName xxx = 24 PrintFileName("file")
運行正常。
但是這樣也是沒錯
xxx = 23 def PrintFileName(strFileName): if xxx == 23: print xxx PrintFileName("file")
問題所在
在python的函數中和全局同名的變量,如果你有修改變量的值就會變成局部變量,在修改之前對該變量的引用自然就會出現沒定義這樣的錯誤了,如果確定要引用全局變量,並且要對它修改,必須加上global關鍵字。