首頁  >  文章  >  後端開發  >  為什麼 Python 循環內的 Lambda 共享狀態?

為什麼 Python 循環內的 Lambda 共享狀態?

Patricia Arquette
Patricia Arquette原創
2024-11-18 05:53:02208瀏覽

Why Do Lambdas Within Loops in Python Share State?

循環內的Lambda:解決共享狀態

在Python 中,循環內創建的lambda 可能會因共享狀態而表現出意外的行為。作為範例,請考慮以下旨在建立存取物件屬性的lambda 表達式的程式碼:

lambdas_list = []
for obj in obj_list:
   lambdas_list.append(lambda : obj.some_var)

但是,在迭代並呼叫這些lambda 表達式時,總是會得到最後一個物件的屬性值:

for f in lambdas_list:
    print(f())

要解決此限制,可以進行簡單的修改:

lambdas_list.append(lambda obj=obj: obj.some_var)

透過提供lambda 的預設參數,物件的當前值在建立時捕獲。這確保每個 lambda 保留自己的狀態,並獲得所需的結果:

for f in lambdas_list:
    print(f())

以上是為什麼 Python 循環內的 Lambda 共享狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn