當(dāng)我們?cè)趥魅牒瘮?shù)時(shí),有些時(shí)候疤苹,不需要顯式地定義函數(shù)互广,直接傳入匿名函數(shù)更方便。
在Python中卧土,對(duì)匿名函數(shù)提供了有限支持惫皱。還是以map()
函數(shù)為例,計(jì)算f(x)=x2
時(shí)尤莺,除了定義一個(gè)f(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]
通過對(duì)比可以看出,匿名函數(shù)lambda x: x * x實(shí)際上就是:
def f(x):
return x * x
關(guān)鍵字lambda
表示匿名函數(shù)颤霎,冒號(hào)前面的x表示函數(shù)參數(shù)媳谁。
匿名函數(shù)有個(gè)限制,就是只能有一個(gè)表達(dá)式友酱,不用寫return晴音,返回值就是該表達(dá)式的結(jié)果。
用匿名函數(shù)有個(gè)好處缔杉,因?yàn)楹瘮?shù)沒有名字锤躁,不必?fù)?dān)心函數(shù)名沖突。此外或详,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象系羞,也可以把匿名函數(shù)賦值給一個(gè)變量郭计,再利用變量來調(diào)用該函數(shù):
>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x101c6ef28>
>>> f(5)
25
同樣,也可以把匿名函數(shù)作為返回值返回觉啊,比如:
def build(x, y):
return lambda: x * x + y * y