更新時間:2022-05-13 09:09:14 來源:動力節(jié)點(diǎn) 瀏覽1291次
Lambda函數(shù)有什么作用?動力節(jié)點(diǎn)小編來告訴大家。
lambda函數(shù)又稱匿名函數(shù),有些情況下我們不用顯式定義而采用匿名函數(shù)會讓代碼看上去更加簡潔。
In [48]: ls = [1,2,3]
In [49]: print(list(map(lambda x:x*x, ls)))
[1, 4, 9]
上面的例子中,通過lambda函數(shù)使得我們可以在不顯式定義函數(shù)的情況下為map傳遞了一個函數(shù),這使得代碼看上去更為簡潔直觀。
關(guān)鍵詞lambda定義了一個匿名函數(shù),冒號前面的是匿名函數(shù)的參數(shù)(當(dāng)需要多個參數(shù)時,參數(shù)之間用逗號,分割),冒號后的是一個表達(dá)式,lambda函數(shù)的返回內(nèi)容就是表達(dá)式的值。
lambda函數(shù)也是一個函數(shù)對象,所以也可以賦值給一個變量。
In [50]: lambda x,y:x*x+y*y
Out[50]: <function __main__.<lambda>>
In [51]: f1 = lambda x,y:x*x+y*y
In [52]: f1(1,2)
Out[52]: 5
lambda函數(shù)也作為返回值返回。
In [53]: def f():
...: x = 1
...: return lambda y:x*x+y*y # lambda函數(shù)引用了本地變量x,并且在函數(shù)f結(jié)束后保存了x的狀態(tài)
...:
In [54]: m = f()
In [55]: m(2)
Out[55]: 5
In [56]: m.__closure__ # 證明m是一個閉包
Out[56]: (<cell at 0x00000132044E9E28: int object at 0x0000000051F260C0>,)
初級 202925
初級 203221
初級 202629
初級 203743