Python 中的動態變數賦值
在 Python 中,無法直接動態設定局部變數。雖然其他答案建議修改 locals() 函數,但這種方法並不可靠,而且可能並不總是有效,尤其是在函數內。
動態變數賦值的替代方案
相反,還有動態分配的替代方法變數:
d = {} d['xyz'] = 42 print(d['xyz']) # Output: 42
class C: pass obj = C() setattr(obj, 'xyz', 42) print(obj.xyz) # Output: 42
def outer_function(x): def inner_function(y): return x + y return inner_function # Returns a closure add_foo = outer_function(10) print(add_foo(5)) # Output: 15
理解locals() 函數
locals() 函數傳回函數內局部變數的字典。然而,直接修改這個字典並不會影響實際的變數值。例如:
def foo(): lcl = locals() lcl['xyz'] = 42 print(xyz) # Error: NameError: name 'xyz' is not defined
這是因為修改 locals() 修改的是局部變數字典的副本,而不是實際變數本身。
結論
雖然在 Python 中無法直接進行動態局部變數賦值,但使用字典、物件屬性或閉包提供了實現類似功能的替代解決方案。請務必注意 locals() 函數的細微差別,以避免在 Python 中使用局部變數時出現混淆。
以上是Python中如何實作動態變數賦值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!