Почему этот код Python работает? - PullRequest
1 голос
/ 23 ноября 2011

Я написал простой модуль 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 Ответ

3 голосов
/ 23 ноября 2011

Я не думаю, что ваша программа не работает по той причине, о которой вы думаете.Нет необходимости использовать объявление global внутри функции, если вы фактически не измените эту переменную.(В противном случае вам нужно будет использовать global для каждого доступа к чему-либо в этом пространстве имен, даже для вызова других функций.)

Я не уверен, что на самом деле происходит при запуске вашей программы - возможно, вы могли бы предоставитьобратная связь или описание проблемы.

...