當(dāng)我們?cè)趥魅牒瘮?shù)時(shí)代咸,有些時(shí)候蹈丸,不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便
關(guān)鍵字 lambda 表示匿名函數(shù)呐芥,冒號(hào)前面的x表示函數(shù)參數(shù)
>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
注:匿名函數(shù)有個(gè)限制逻杖,就是只能有一個(gè)表達(dá)式,不用寫return思瘟,返回值就是該表達(dá)式的結(jié)果
優(yōu)點(diǎn):
函數(shù)沒有名字荸百,不必?fù)?dān)心函數(shù)名沖突。
此外滨攻,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象够话,也可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來(lái)調(diào)用該函數(shù)
>>> f = lambda x : x * x
>>> f
<function <lambda> at 0x000001B11F2327B8>
>>> f(10)
100
也可以把匿名函數(shù)作為返回值返回
def build(x, y):
return lambda: x * x + y * y
練習(xí)題
利用匿名函數(shù) 輸出給定范圍內(nèi)的基數(shù)
def is_odd(n):
if n % 2 == 1:
return n
L = list(filter(is_odd, range(1, 20)))
print(L)