首頁 >後端開發 >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 呼叫期間更新局部變數的問題。

解:

要解決這個問題,您需要明確地將本地字典傳遞給exec 函數:

def foo():
    ldict = {}
    exec("a = 3", globals(), ldict)
    a = ldict['a']
    print(a)

透過使用locals(),您建立一個新的本機exec 呼叫的變數命名空間。對此命名空間的修改將反映在 foo 函數的本地作用域中。

重點:

  • Python 3 最佳化了局部變數存儲,影響了exec 的行為.
  • exec 的預設本地字典無法在Python 中修改3.
  • 使用明確本地字典允許在exec調用中更新局部變數。

以上是如何在 Python 的 exec 函數中更新局部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn