我编写了一个简单的python模块,它有这段代码:
_log = logging.getLogger("mymodule")
_started = False
def set_log_level(level):
_log.setLevel(level)
if not _started:
_hdlr = logging.FileHandler('mymodule.log')
当我致电set_log_level()
时,程序失败,因为找不到符号_started
。这是正常的,因为方法中缺少global _started
。但我的问题是:符号_log
与_started
具有相同的可见性,为什么可以找到此符号?
答案 0 :(得分:3)
我认为您的计划因您认为的原因而失败。除非您实际修改该变量,否则无需在函数中使用global
声明。 (否则,您需要对该命名空间中的某些内容进行全局访问,甚至调用其他函数。)
我不确定您运行程序时实际发生了什么 - 也许您可以提供问题的追溯或描述。