問題:
當在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中文網其他相關文章!