當(dāng)我們?cè)趧?chuàng)建函數(shù)時(shí),有些時(shí)候,不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便。這省去了我們挖空心思為函數(shù)命名的麻煩,也能少寫(xiě)不少代碼,很多編程語(yǔ)言都提供這一特性。匿名函數(shù)用好了,會(huì)有畫(huà)龍點(diǎn)睛的效果,沒(méi)用好,就容易“畫(huà)虎不成反類犬”,需要我們?cè)谄綍r(shí)的代碼過(guò)程中,多學(xué)、多看、多琢磨。
python語(yǔ)言使用lambda關(guān)鍵字來(lái)創(chuàng)建匿名函數(shù)。
所謂匿名,即不再使用def語(yǔ)句這樣標(biāo)準(zhǔn)的形式定義一個(gè)函數(shù)。
lambda只是一個(gè)表達(dá)式,而不是一個(gè)代碼塊,函數(shù)體比def簡(jiǎn)單很多。僅僅能在lambda表達(dá)式中封裝有限的邏輯。lambda函數(shù)擁有自己的命名空間。
其形式通常是這樣的:lambda參數(shù):表達(dá)式。
例如:lambdax:x*x。它相當(dāng)于下面的函數(shù):
deff(x):
returnx*x
關(guān)鍵字lambda表示匿名函數(shù),冒號(hào)前面的x表示函數(shù)參數(shù),x*x是執(zhí)行代碼。
匿名函數(shù)只能有一個(gè)表達(dá)式,不用也不能寫(xiě)return語(yǔ)句,表達(dá)式的結(jié)果就是其返回值。匿名函數(shù)沒(méi)有函數(shù)名字,不必?fù)?dān)心函數(shù)名沖突,節(jié)省字義空間。此外,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象,也可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來(lái)調(diào)用該函數(shù):
>>>f=lambdax:x*x
>>>f
at0x3216fef44>
>>>f(6)
36
也可以把匿名函數(shù)作為別的函數(shù)的返回值返回。
defadd(string,i):
returnlambda:int(string)+i
以上內(nèi)容為大家介紹了python培訓(xùn)之什么是匿名函數(shù),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。