ホームページ >バックエンド開発 >Python チュートリアル >Python の「exec」関数内でローカル変数を更新するにはどうすればよいですか?

Python の「exec」関数内でローカル変数を更新するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 01:58:10686ブラウズ

How Can I Update Local Variables Within Python's `exec` Function?

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 3 はローカル変数ストレージを最適化し、exec の動作に影響を与えます。 .
  • exec のデフォルトのローカル辞書は Python では変更できません3.
  • 明示的なローカル辞書を使用すると、実行呼び出し内でローカル変数を更新できます。

以上がPython の「exec」関数内でローカル変数を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。