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

7x24小時咨詢熱線

400-660-3310

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

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

2021-12-27

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

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

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

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

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

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

使用場景:

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

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

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

代碼

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

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

lambda函數(shù)比普通函數(shù)更簡潔,且沒有聲明函數(shù)名,上面的代碼是用一個變量來接收lambda函數(shù)返回的函數(shù)對象,并不是lambda函數(shù)的名字。

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

匿名函數(shù)

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

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

lambda

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

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

函數(shù)的返回值

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

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

收藏
分享到:

相關(guān)課程

相關(guān)資訊

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

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

認(rèn)證等級

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

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

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

信譽(yù)值

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

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

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