为什么这个python代码有效?

时间:2011-11-23 17:41:57

标签: python module visibility globals

我编写了一个简单的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具有相同的可见性,为什么可以找到此符号?

1 个答案:

答案 0 :(得分:3)

我认为您的计划因您认为的原因而失败。除非您实际修改该变量,否则无需在函数中使用global声明。 (否则,您需要对该命名空间中的某些内容进行全局访问,甚至调用其他函数。)

我不确定您运行程序时实际发生了什么 - 也许您可以提供问题的追溯或描述。