Python匿名函數(shù)詳情
1、匿名函數(shù)
在python中,除了一般使用def定義的函數(shù)外,還有一種使用lambda定義的匿名函數(shù)。這種函數(shù)可以用在任何普通函數(shù)可以使用的地方,但在定義時被嚴(yán)格限定為單一表達式。從語義上講,它只是普通函數(shù)的語法糖。
如果我們需要定義一個特別簡單的函數(shù),例如
def add(a, b):
s = a + b
return s
這就出現(xiàn)問題了,這么優(yōu)雅的Python怎么可以出現(xiàn)這種難看的代碼呢,有沒有辦法可以將其簡化為1行代碼呢?這么優(yōu)雅的Python肯定有辦法將其簡化的方法啊!這要用到匿名函數(shù)了。
python中使用 **lambda**關(guān)鍵字來創(chuàng)建匿名函數(shù)。
語法格式:
lambda [參數(shù)1 [,參數(shù)2,..參數(shù)n]]:表達式
lambda 參數(shù)列表:return [表達式] 變量
由于lambda返回的是函數(shù)對象(構(gòu)建的是一個函數(shù)對象),所以需要定義一個變量去接收
示例代碼如下:
news_add = lambda a, b: a + b
# 上面的那個等于
def news_add_old(a, b):
return a + b
x = news_add_old(5, 10)
y = news_add(5, 10) # 調(diào)用匿名函數(shù)
print(x, y) # 15 15
2、內(nèi)置函數(shù)使用
結(jié)合內(nèi)置函數(shù)使用:
list1 = [{"a": 10, "b": 20}, {"a": 20, "b": 20}, {"a": 50, "b": 20}, {"a": 6, "b": 20}, {"a": 9, "b": 20}]
# 那個列表中的a最大
max_value = max(list1, key=lambda x: x["a"])
print(max_value)
# 如果用普通的函數(shù)寫就多了幾行
def func(di):
return di["a"]
max_value = max(list1, key=func) # 這里不能加()不然就表示調(diào)用了
print(max_value)
將匿名函數(shù)當(dāng)做參數(shù):
def func(a, b, fun):
s = fun(a, b)
return s
z = func(5, 10, lambda a, b: a + b)
print(z) # 15
lambda可以省去定義函數(shù)的過程,讓代碼更加精簡,而且不用考慮命名問題,但是在PEP8規(guī)范里面是不推薦用lambda這種方式的。
到此這篇關(guān)于Python匿名函數(shù)詳情的文章就介紹到這了,更多相關(guān)Python匿名函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python pow函數(shù)的底層實現(xiàn)原理介紹
這篇文章主要介紹了python pow函數(shù)的底層實現(xiàn)原理介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Python 運行.py文件和交互式運行代碼的區(qū)別詳解
這篇文章主要介紹了Python 運行.py文件和交互式運行代碼的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python3.9和pycharm的安裝教程并創(chuàng)建簡單項目的步驟
這篇文章主要介紹了python3.9和pycharm的安裝教程并創(chuàng)建簡單項目的步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

