南京正厚軟件技術(shù)培訓(xùn)學(xué)校

7x24小時(shí)咨詢熱線

400-660-3310

當(dāng)前位置 : 好學(xué)校 南京正厚軟件技術(shù)培訓(xùn)學(xué)校 學(xué)習(xí)資訊 資訊詳情

Python匿名函數(shù)lambda的使用

2021-12-27

一、匿名函數(shù)介紹

在Python中,不通過(guò)def來(lái)聲明函數(shù)名字,而是通過(guò)lambda關(guān)鍵字來(lái)定義的函數(shù)稱為匿名函數(shù)。

lambda函數(shù)能接收任何數(shù)量(可以是0個(gè))的參數(shù),但只能返回一個(gè)表達(dá)式的值,lambda函數(shù)是一個(gè)函數(shù)對(duì)象,直接賦值給一個(gè)變量,這個(gè)變量就成了一個(gè)函數(shù)對(duì)象。

語(yǔ)法:lambda 參數(shù):表達(dá)式

先寫lambda關(guān)鍵字,然后依次寫匿名函數(shù)的參數(shù),多個(gè)參數(shù)中間用逗號(hào)連接,然后是一個(gè)冒號(hào),冒號(hào)后面寫返回的表達(dá)式。

使用lambda函數(shù)可以省去函數(shù)的定義,不需要聲明一個(gè)函數(shù)然后使用,而可以在寫函數(shù)的同時(shí)直接使用函數(shù)。

使用場(chǎng)景:

1.需要將一個(gè)函數(shù)對(duì)象作為參數(shù)來(lái)傳遞時(shí),可以直接定義一個(gè)lambda函數(shù)(作為函數(shù)的參數(shù)或返回值)

2.要處理的業(yè)務(wù)符合lambda函數(shù)的情況(任意多個(gè)參數(shù)和一個(gè)返回值),并且只有一個(gè)地方會(huì)使用這個(gè)函數(shù),不會(huì)在其他地方重用,可以使用lambda函數(shù)

3.與一些Python的內(nèi)置函數(shù)配合使用,提高代碼的可讀性

代碼

二、匿名函數(shù)與普通函數(shù)的對(duì)比

可以看到,lambda適用于多個(gè)參數(shù)、一個(gè)返回值的情況,可以用一個(gè)變量來(lái)接收,變量是一個(gè)函數(shù)對(duì)象,執(zhí)行這個(gè)函數(shù)對(duì)象的結(jié)果與執(zhí)行一個(gè)普通函數(shù)的結(jié)果一樣。

lambda函數(shù)比普通函數(shù)更簡(jiǎn)潔,且沒(méi)有聲明函數(shù)名,上面的代碼是用一個(gè)變量來(lái)接收l(shuí)ambda函數(shù)返回的函數(shù)對(duì)象,并不是lambda函數(shù)的名字。

三、匿名函數(shù)的多種形式

匿名函數(shù)

可以看到,lambda的參數(shù)可以0個(gè)到多個(gè),并且返回的表達(dá)式可以是一個(gè)復(fù)雜的表達(dá)式,只要值是一個(gè)值就行了。

四、lambda作為一個(gè)參數(shù)傳遞

lambda

上面的代碼中,sub中需要傳入一個(gè)函數(shù),然后這個(gè)函數(shù)在sub里面執(zhí)行,這時(shí)候我們就可以使用lambda函數(shù),因?yàn)閘ambda就是一個(gè)函數(shù)對(duì)象。

五、lambda作為函數(shù)的返回值

函數(shù)的返回值

匿名函數(shù)可以作為一個(gè)函數(shù)的返回值,在上面的代碼中,run返回的是一個(gè)匿名函數(shù),返回的是一個(gè)函數(shù)對(duì)象,當(dāng)我們執(zhí)行這個(gè)函數(shù)時(shí),可以得到lambda函數(shù)的結(jié)果。

注意:其中的a,b兩個(gè)參數(shù)是run中的參數(shù),但我們執(zhí)行返回的函數(shù)run_a時(shí),已經(jīng)不在run的作用域內(nèi)了,而lambda函數(shù)仍然能使用a,b參數(shù)。說(shuō)明lambda函數(shù)會(huì)將它的運(yùn)行環(huán)境保存一份,一直保留到它自己執(zhí)行的時(shí)候使用。

收藏
分享到:

相關(guān)課程

相關(guān)資訊

南京正厚軟件技術(shù)培訓(xùn)學(xué)校

南京正厚軟件技術(shù)培訓(xùn)學(xué)校

認(rèn)證等級(jí)

信譽(yù)良好,可安心報(bào)讀

南京正厚軟件技術(shù)培訓(xùn)學(xué)校

已獲好學(xué)校V2信譽(yù)等級(jí)認(rèn)證

信譽(yù)值

  • (60-80)基礎(chǔ)信譽(yù)積累,可放心報(bào)讀
  • (81-90)良好信譽(yù)積累,可持續(xù)信賴
  • (91-100)充分信譽(yù)積累,推薦報(bào)讀

與好學(xué)校簽訂讀書(shū)保障協(xié)議:

  • 100%
  • 65
  • 12362
在線咨詢
;