2
我不禁納悶......未定義的變量及作用域規則
配置:
[email protected]:~/$ python --version
Python 2.7.5+
代碼:
import logging
logger = logging.getLogger('x')
def main():
print logger
logger = 2
if __name__ == "__main__":
main()
輸出:
[email protected]:~/$ python ./manager.py
Traceback (most recent call last):
File "./manager.py", line 9, in <module>
main()
File "./manager.py", line 5, in main
print logger
UnboundLocalError: local variable 'logger' referenced before assignment
顯然,我期望print語句訪問glob盟友定義的記錄器變量。有沒有我不明白的python變量範圍規則?
另外,顯然,logger = 2語句不應該做太多。但是,如果我刪除它,未定義的變量異常消失。
您正在分配給名稱=>本地。 –
「有什麼我不瞭解python變量範圍規則嗎?」是。你不明白,你可以有局部變量與全局範圍聲明的變量名稱相同。如果你想在全局範圍使用變量,你需要這樣說:'def main():global logging;打印記錄器;記錄器= 2' – hughdbrown
這應該是'全球記錄器'。抱歉。 – hughdbrown