您好,登錄后才能下訂單哦!
本篇內容介紹了“Python的lambda函數有什么作用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
lambda非常重要的一個定義。lambda在【運行時】才綁定,【不是】在定義的時候綁定。下面這個列子:
本意想:讓X分別與0到1的數相加。x+0,x+1,x+2,x+3
實際運行結果是:
0
0
0
0
原因就是上面提到的,運行時才綁定。先運行的for循環,無法捕捉到循環。
func = [lambda x: x + n for n in range(4)] # x+n,n是從0到3 For循環,x+0,x+1,x+3 for f in func: print(f(0)) # 打印func列表的第一個數據。
——————————————————————
修改后的代碼:增加了n=n
func = [lambda x,n=n:x+n for n in range(4)] for f in func: print(f(0))
運行結果:
0
1
2
3
這是我們想達到的結果。n=n,就是在定義時捕捉。
原因:
n是自由變量,執行時才能確定。
我們把n變成參數就可以了,因為參數可以在定義時綁定變量。
——————————————————————
下面的例子很奇怪:
h = 1 a = lambda k: h + k h = 2 b = lambda k: h + k print(a(3)) print(b(3))
運行結果:
5
5
我們賦值的h=1根本沒被使用。始終做計算3+2。
h=1
h=2
都是全局變量,就會以最后一個為準。
——————————————————————
修改后
h = 1 a = lambda k,h=h: h + k h = 3 b = lambda k,h=h: h + k print(a(10)) print(b(10))
運行結果:
11
13
——————————————————————
h = 1 h = 100 a = lambda k,h=h: h + k h = 3 b = lambda k,h=h: h + k print(a(10)) print(b(10))
結果:
110
13
上面最后的例子,發現h=1,h=100,只選擇100參與計算。100+10=110 因為h=1,h=100都是全局,以最后為準。python代碼從上到下運行的。
“Python的lambda函數有什么作用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。