Skip to main content
 首页 » 编程设计

python之undefined variable 和作用域规则

2025年05月04日11kerrycode

<分区>

我不禁想知道...

配置:

mathieu@mathieu-UX21E:~/$ python --version 
Python 2.7.5+ 

代码:

import logging 
logger = logging.getLogger('x') 
 
def main(): 
    print logger 
    logger = 2 
 
if __name__ == "__main__": 
    main() 

输出:

mathieu@mathieu-UX21E:~/$ 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 

显然,我希望打印语句访问全局定义的记录器变量。关于 python 变量作用域规则,我有什么不明白的地方吗?

此外,很明显,logger = 2 语句不应该做太多事情。但是,如果我删除它, undefined variable 异常就会消失。