python中的lambda函數(shù)用法指南
最近碰見(jiàn)太多次lambda函數(shù)了,那就來(lái)詳細(xì)解釋一下該函數(shù)。
lambda函數(shù)
我們先對(duì)lambda函數(shù)進(jìn)行一個(gè)簡(jiǎn)單的介紹
- lambda函數(shù)是一種匿名函數(shù),即沒(méi)有名字的函數(shù)
- 使用lambda保留字定義,函數(shù)名是返回結(jié)果
- lambda函數(shù)的函數(shù)體只是一個(gè)表達(dá)式
- lambda函數(shù)用于定義簡(jiǎn)單的、能夠在一行內(nèi)表示的函數(shù)
- lambda表達(dá)式” : “后面,只能有一個(gè)表達(dá)式,def則可以有多個(gè)。
- lambda一般用來(lái)定義簡(jiǎn)單的函數(shù),而def可以定義復(fù)雜的函數(shù)
先來(lái)看一個(gè)例子:
g=lambda x:x+1 print(g(1)) #結(jié)果為2
可以這樣認(rèn)為,lambda作為一個(gè)表達(dá)式,定義了一個(gè)匿名函數(shù)。等價(jià)于:
def g(x): return x+1
非常容易理解,在這里lambda簡(jiǎn)化了函數(shù)定義的書(shū)寫(xiě)形式。是代碼更為簡(jiǎn)潔,但是使用函數(shù)的定義方式更為直觀,易理解。
可傳入多個(gè)參數(shù)
g=lambda x,y,z:x+y+z*2 print(g(1,2,3)) #結(jié)果為9 #也可直接傳遞參數(shù) (lambda x:x**2)(3) #結(jié)果為9
lambda表達(dá)式會(huì)返回一個(gè)函數(shù)對(duì)象,如果沒(méi)有變量接受這個(gè)返回值的話(huà),它很快就會(huì)被丟棄。也正是由于lambda只是一個(gè)表達(dá)式,所以它可以直接作為list和dict的成員
list_a = [lambda a: a**3, lambda b: b**3] print(type(list_a[0]))
結(jié)果為:
與map函數(shù)進(jìn)行使用
a = map(lambda x:x**2,range(5)) print(list(a))
結(jié)果為:
補(bǔ)充:一個(gè)爭(zhēng)議
事實(shí)上,關(guān)于lambda在Python社區(qū)是存在爭(zhēng)議的。Python程序員對(duì)于到底要不要使用lambda意見(jiàn)不一致。
- 支持方認(rèn)為使用lambda編寫(xiě)的代碼更緊湊,更“pythonic”。
- 反對(duì)方認(rèn)為,lambda函數(shù)能夠支持的功能十分有限,其不支持多分支程序if...elif...else...和異常處理程序try ...except...。并且,lambda函數(shù)的功能被隱藏,對(duì)于編寫(xiě)代碼之外的人員來(lái)說(shuō),理解lambda代碼需要耗費(fèi)一定的理解成本。他們認(rèn)為,使用for循環(huán)等來(lái)替代lambda是一種更加直白的編碼風(fēng)格。
關(guān)于lambda的爭(zhēng)執(zhí)沒(méi)有定論。在實(shí)際中,是否使用lambda編程取決于程序員的個(gè)人喜好。
總結(jié)
lambda函數(shù)使代碼結(jié)構(gòu)更加緊湊,但卻使代碼看起來(lái)不是那么清晰。
參考資料
https://zhuanlan.zhihu.com/p/80960485
到此這篇關(guān)于python中的lambda函數(shù)用法的文章就介紹到這了,更多相關(guān)python中l(wèi)ambda函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)的搖骰子猜大小功能小游戲示例
這篇文章主要介紹了Python實(shí)現(xiàn)的搖骰子猜大小功能小游戲,涉及Python隨機(jī)數(shù)運(yùn)算與數(shù)值判斷相關(guān)操作技巧,需要的朋友可以參考下2017-12-12python多項(xiàng)式擬合之np.polyfit 和 np.polyld詳解
這篇文章主要介紹了python多項(xiàng)式擬合之np.polyfit 和 np.polyld的實(shí)例代碼,python數(shù)據(jù)擬合主要可采用numpy庫(kù),庫(kù)的安裝可直接用pip install numpy等,需要的朋友跟隨小編一起學(xué)習(xí)吧2020-02-02完美解決安裝完tensorflow后pip無(wú)法使用的問(wèn)題
今天小編就為大家分享一篇完美解決安裝完tensorflow后pip無(wú)法使用的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06對(duì)python字典過(guò)濾條件的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python字典過(guò)濾條件的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01PageFactory設(shè)計(jì)模式基于python實(shí)現(xiàn)
這篇文章主要介紹了PageFactory設(shè)計(jì)模式基于python實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04