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

Patricia Arquette
發布: 2024-11-18 05:53:02
原創
208 人瀏覽過

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中文網其他相關文章!

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