動態變數設定:超越locals()
在Python 中,如果變數名稱本身是動態的,則動態設定局部變數會帶來挑戰。與流行的假設相反,對 locals() 字典的修改對於在函數內設定局部變數並不總是可靠的。
替代方法:
而不是依賴locals( ),考慮以下因素替代方案:
使用字典:
建立一個字典並將動態變數名稱指派給一個鍵。透過字典存取值。
d = {} d['xyz'] = 42 print(d['xyz']) # Prints 42
使用類別屬性:
定義一個類別並將動態變數名稱設為屬性。透過類別實例存取值。
class C: pass obj = C() setattr(obj, 'xyz', 42) print(obj.xyz) # Prints 42
理解Locals() 行為:
雖然locals() 可能在函數內部工作,因為對於編譯器優化,需要需要注意的是直接修改locals() 可能會導致意外結果。對傳回字典的賦值是短暫的,將在下一次 locals() 呼叫時被覆寫。
IronPython 細節:
在 IronPython 中,locals() 的行為有所不同。以不同名稱呼叫 locals() 會綁定到該名稱所綁定範圍的局部變數。但是,無法透過此綁定名稱存取函數局部變數。
以上是除了使用 locals() 之外,如何在 Python 中動態設定局部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!