些細な例があります:
def func1():
local_var = None
def func(args):
print args,
print "local_var:", local_var
local_var = "local"
func("first")
func("second")
func1()
出力は次のようになると思います。
最初の local_var: なし 2 番目の local_var: ローカル
ただし、私の実際の出力は次のとおりです。
最初の local_var: トレースバック (最新の呼び出しが最後): ファイル「test.py」の 13 行目 関数1() ファイル「test.py」、10行目、func1 func("最初") ファイル "test.py"、6 行目、func 内 print "local_var:", local_var UnboundLocalError: 割り当て前に参照されたローカル変数 'local_var'
Python スコープ ルールに関する私の理解では、これは期待どおりに機能するはずです。これが期待どおりに機能する他のコードがありますが、機能しないコードフラグメントを上記の簡単なケースに減らすことも機能しません。だから私は困惑しています。