首頁 > 後端開發 > Python教學 > 為什麼 Python 循環中的 Lambda 函數有時無法正確綁定?

為什麼 Python 循環中的 Lambda 函數有時無法正確綁定?

Barbara Streisand
發布: 2024-12-26 19:43:22
原創
473 人瀏覽過

Why Do Lambda Functions in Python Loops Sometimes Fail to Bind Properly?

循環中的 Lambda 函數

在 Python 中,lambda 函數提供了定義匿名函數的簡潔方法。然而,當在循環中使用時,如果不能確保正確的綁定,它們可能會導致意外的行為。

考慮以下程式碼片段:

目的是建立一個字典映射指令更改目錄的函數的字串。然而,結果卻出乎意料:創建的兩個 lambda 函數是相同的,並且執行相同的命令,將目錄更改為“login”。

為什麼會發生這種情況?

循環內的 Lambda 函數共享相同的函數作用域。這意味著 lambda 函數捕獲的變數對於循環的所有迭代都是相同的。在本例中,「d」代表「directorys」字典中最後一項的值,即「login」。

解決問題

確保正確的綁定,我們需要確保每個 lambda 函數都可以存取自己唯一的「d」值。一種方法是將“d”作為具有預設值的參數傳遞:

透過在循環的每次迭代中將“d”的預設值設為“d”的當前值,我們為每個lambda 函數建立一個唯一的閉包。或者,我們可以使用額外的閉包技術來實現相同的結果:

這個外部lambda 函數為“d”創建一個閉包,而內部lambda 函數使用閉包中的“d” 。

以上是為什麼 Python 循環中的 Lambda 函數有時無法正確綁定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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