1

私は簡単な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のに、なぜこのシンボルを見つけることができるのかということです。

4

1 に答える 1

4

あなたが考える理由であなたのプログラムが失敗するとは思いません。global実際にその変数を変更しない限り、関数内で宣言を使用する必要はありません。(そうしないと、他の関数を呼び出しても、その名前空間内の何かにアクセスするたびに global を使用する必要があります。)

プログラムを実行したときに実際に何が起こるかわかりません。おそらく、問題のトレースバックまたは説明を提供してください。

于 2011-11-23T17:47:06.333 に答える