首頁 > 後端開發 > Python教學 > 為什麼 exec 不更新 Python 3 中的局部變量,如何修復它?

為什麼 exec 不更新 Python 3 中的局部變量,如何修復它?

Linda Hamilton
發布: 2024-12-14 20:20:11
原創
794 人瀏覽過

Why Doesn't exec Update Local Variables in Python 3, and How Can I Fix It?

如何在Python 3 中使用exec 更新局部變數

問題:

當在Python 3 中使用exe 執行時函數內的一串程式碼,函數內的局部變數不會更新。此問題的出現​​是由於 Python 3 對局部變數儲存的高效優化。

範例:

此程式碼預計會列印3,但實際上列印了1.

解決方案:

要使用exec修改局部變量,必須傳遞明確的局部字典。這可以透過以下方式實現:

解釋:

Python 3 將局部變數儲存在陣列中以最佳化它們的存取。但是,exec 的預設行為不允許修改局部變數。透過傳遞明確的本地字典,可以將變數分配給字典,並可以透過​​它存取其修改後的值。

Python 2 vs Python 3:

在Python 2 中,由於最佳化機制允許具有exec 的函數具有非最佳化的局部變數存儲,因此這種行為按預期工作。然而,在 Python 3 中,這種優化不再可能,導致觀察到的行為。

注意:

重要的是要記住,傳遞顯式本地字典應該僅在必要時才執行,因為它消除了Python 3 對局部變數的預設處理所提供的最佳化優勢。

以上是為什麼 exec 不更新 Python 3 中的局部變量,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板