2011-10-05 4 views
7

コードexec'edコードで宣言された変数は、Python 3 - documentationではローカルになりませんか?

x = 3 
def f(): 
    exec("x = 2") 
    print(x) 
f() 

のPython 2とPython 3の両方で実行されますが、異なる結果を印刷します。この変更はどこに文書化されていますか? (メーリングリストの議論へのポインタも大丈夫だと思う - 私は純粋に好奇心から、これをお願いします。)

いくつかの牛車は、Python 3から削除されたためだ

答えて

5

exec() functionについての新しいドキュメントは、いくつかの注意事項がありますそれについては完全に説明していません。

execステートメントを見た後で、varsと関数へのすべてのアクセスを、LOAD_FASTまたはLOAD_GLOBALの代わりにLOAD_NAMEに変更します。

hereについての私の他の答えを確認してください。

+0

私はこれについてよく知っています。しかし、私の質問には答えません。とにかくありがとう:) –

+0

ああ、あなたはドキュメントについて話しています...私はそれを文書化したことはありませんでしたが、それはどこかにあるはずです – JBernardo

+0

これはおそらく最高のドキュメントのポインタです。 –

1

まあ、バグトラッカーにはthis bug reportがありますが、正確にはドキュメントではありません。

ああ、this oneはさらに優れています。

いいえ、おそらくthe best oneです。

関連する問題