使用 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 的 exec 函數中更新局部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!