lambda定義匿名函數(shù)

Python的關(guān)鍵字lambad是定義匿名函數(shù)用的....什么是匿名函數(shù)?就是不需函數(shù)名的函數(shù)。和def有什么區(qū)別呢?

  • python lambda會(huì)創(chuàng)建一個(gè)函數(shù)對(duì)象,但不會(huì)把這個(gè)函數(shù)對(duì)象賦給一個(gè)標(biāo)識(shí)符,而def則會(huì)把函數(shù)對(duì)象賦值給一個(gè)變量。
  • python lambda它只是一個(gè)表達(dá)式,而def則是一個(gè)語(yǔ)句。

先定義一個(gè)普通函數(shù):

>>> def add(x):
        return x*2
>>> add(1)
2
>>> add(5)
10

定義一個(gè)普通函數(shù),主要作用就是將傳入的值乘以2并返回?,F(xiàn)在來(lái)改成匿名函數(shù)

>>> lambda x: x*2
<function __main__.<lambda>>

上面的示例,僅僅是定義了一個(gè)匿名函數(shù),語(yǔ)法是lambda 參數(shù) : 操作。

  • 示例代碼中參數(shù)是一個(gè),但是參數(shù)可以很多個(gè)
  • 操作只有一條。x*2,不需要return會(huì)自己返回

還有一點(diǎn),匿名函數(shù)創(chuàng)建好不會(huì)賦給參數(shù),所以定義了之后需要使用,最好是傳給一個(gè)標(biāo)示符參數(shù),如下:

>>> lam = lambda x: x*x
>>> lam
<function __main__.<lambda>>
>>> lam(10)
100
>>> lam(4)
16
>>> lamadd = lambda x,y:x+y
>>> lamadd(1,2)
3
>>> lamadd(100,99)
199
lambda定義和使用

既然定義必須賦給一個(gè)變量才可以使用,匿名函數(shù)+標(biāo)示符 類似于 def定義的函數(shù),那匿名的存在有什么意義?

既然這里提到 lambda 匿名函數(shù),就必須提及高階函數(shù)

高階函數(shù)

首先明確一點(diǎn),匿名函數(shù)定義傳給一個(gè)變量,變量后面跟上括號(hào)并放入值,就可以得到函數(shù)操作,這就表明變量可以指向函數(shù),這點(diǎn)很重要,理解這點(diǎn)之后,學(xué)習(xí)高階函數(shù)就會(huì)有比較清晰的思路

同樣的先來(lái)個(gè)示例學(xué)習(xí)一下什么叫高階函數(shù):

>>> f2 = lambda x:x*x
>>> def newadd(x,y,f):
        return f(x)+f(y)
>>> newadd(1, 2, f2)
5
>>> newadd( 3, 7, f2)
58

定義一個(gè)匿名函數(shù)并賦值給f2,并定義一個(gè)普通函數(shù),參數(shù)是三個(gè),x、y和一個(gè) f 的函數(shù)。

由于前面提及的一個(gè)點(diǎn):變量可以指向函數(shù),所以f = f2 = lambda -> f(x) = f2(2) = 2*2 = 4

高階函數(shù)的理解就是這樣【只可意會(huì)不可言傳】。理解這一點(diǎn)很重要,趁熱繼續(xù)學(xué)習(xí)python的內(nèi)置高階函數(shù)

高階函數(shù)示例

Python內(nèi)置高階函數(shù)

map函數(shù)

map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù)名,另一個(gè)是可遍歷的對(duì)象【如列表、字符串】,返回一個(gè)map類型。示例代碼如下:

>>> ks1 = [1,2,3,4,5,6,7,8,9]
>>> ku = map(lambda x: x+1, ks1)
>>> type(ku)
map
>>> list(ku)
[2, 3, 4, 5, 6, 7, 8, 9, 10]

示例代碼中,可以直接使用匿名函數(shù),簡(jiǎn)潔明了

高階函數(shù)map

高階函數(shù)未完

更多Python3教程--傳送門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容