Python匿名函數詳情
1、匿名函數
在python中,除了一般使用def定義的函數外,還有一種使用lambda定義的匿名函數。這種函數可以用在任何普通函數可以使用的地方,但在定義時被嚴格限定為單一表達式。從語義上講,它只是普通函數的語法糖。
如果我們需要定義一個特別簡單的函數,例如
def add(a, b):
s = a + b
return s
這就出現問題了,這么優(yōu)雅的Python怎么可以出現這種難看的代碼呢,有沒有辦法可以將其簡化為1行代碼呢?這么優(yōu)雅的Python肯定有辦法將其簡化的方法??!這要用到匿名函數了。
python中使用 **lambda**關鍵字來創(chuàng)建匿名函數。
語法格式:
lambda [參數1 [,參數2,..參數n]]:表達式
lambda 參數列表:return [表達式] 變量
由于lambda返回的是函數對象(構建的是一個函數對象),所以需要定義一個變量去接收
示例代碼如下:
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) # 調用匿名函數
print(x, y) # 15 15
2、內置函數使用
結合內置函數使用:
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)
# 如果用普通的函數寫就多了幾行
def func(di):
return di["a"]
max_value = max(list1, key=func) # 這里不能加()不然就表示調用了
print(max_value)
將匿名函數當做參數:
def func(a, b, fun):
s = fun(a, b)
return s
z = func(5, 10, lambda a, b: a + b)
print(z) # 15
lambda可以省去定義函數的過程,讓代碼更加精簡,而且不用考慮命名問題,但是在PEP8規(guī)范里面是不推薦用lambda這種方式的。
到此這篇關于Python匿名函數詳情的文章就介紹到這了,更多相關Python匿名函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

