南京正厚軟件技術培訓學校

7x24小時咨詢熱線

400-660-3310

當前位置 : 好學校 南京正厚軟件技術培訓學校 學習資訊 資訊詳情

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

2021-12-27

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

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

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

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

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

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

使用場景:

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

2.要處理的業(yè)務符合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個到多個,并且返回的表達式可以是一個復雜的表達式,只要值是一個值就行了。

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

lambda

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

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

函數(shù)的返回值

匿名函數(shù)可以作為一個函數(shù)的返回值,在上面的代碼中,run返回的是一個匿名函數(shù),返回的是一個函數(shù)對象,當我們執(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ù)會將它的運行環(huán)境保存一份,一直保留到它自己執(zhí)行的時候使用。

收藏
分享到:

相關課程

相關資訊

南京正厚軟件技術培訓學校

南京正厚軟件技術培訓學校

認證等級

信譽良好,可安心報讀

南京正厚軟件技術培訓學校

已獲好學校V2信譽等級認證

信譽值

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

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

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