Python Exec による変数更新の制限の克服
Python では、exec 関数を使用すると、実行時に Python コードを動的に実行できます。ただし、ローカル変数と一緒に使用すると、予期しない動作をする可能性があります。
問題:
次のコードを考えてみましょう:
def f(): a = 1 exec("a = 3") print(a) f()
Python の場合2 の場合、このコードは 3 を出力し、ローカル変数 a が exec 呼び出し内で更新されたことを示します。ただし、Python 3 では 1 が出力されるため、実行呼び出し中にローカル変数をどのように更新するかという問題が生じます。
解決策:
この問題に対処するには、次のようにします。ローカル辞書を exec 関数に明示的に渡す必要があります:
def foo(): ldict = {} exec("a = 3", globals(), ldict) a = ldict['a'] print(a)
locals() を使用すると、 exec 呼び出し用の新しいローカル変数名前空間。この名前空間への変更は、foo 関数のローカル スコープに反映されます。
キー ポイント:
以上がPython の「exec」関数内でローカル変数を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。