python基礎(chǔ)之匿名函數(shù)詳解
1.匿名函數(shù)介紹
匿名函數(shù)指一類無須定義標(biāo)識(shí)符的函數(shù)或子程序。Python用lambda語法定義匿名函數(shù),只需用表達(dá)式而無需申明。
在python中,不通過def來聲明函數(shù)名字,而是通過 lambda 關(guān)鍵字來定義的函數(shù)稱為匿名函數(shù)。
lambda函數(shù)能接收任何數(shù)量(可以是0個(gè))的參數(shù),但只能返回一個(gè)表達(dá)式的值,lambda函數(shù)是一個(gè)函數(shù)對(duì)象,直接賦值給一個(gè)變量,這個(gè)變量就成了一個(gè)函數(shù)對(duì)象。
2.語法
lambda 參數(shù):表達(dá)式
3.使用場(chǎng)景
(1)需要將一個(gè)函數(shù)對(duì)象作為參數(shù)來傳遞時(shí),可以直接定義一個(gè)lambda函數(shù)(作為函數(shù)的參數(shù)或是返回值)
(2)要處理的業(yè)務(wù)符合 lambda 函數(shù)的情況(任意多個(gè)參數(shù)和一個(gè)返回值),并且只有一個(gè)地方會(huì)使用這個(gè)函數(shù),不會(huì)在其他地方重用,可以使用lambda函數(shù)
4.匿名函數(shù)和普通函數(shù)的對(duì)比
def sum_func(a, b, c): return a + b + c # 將匿名函數(shù)對(duì)象賦值給 sum_lambda sum_lambda = lambda a, b, c: a + b + c print(sum_func(1, 2, 3)) # 6 print(sum_lambda(1, 2, 3)) # 6
5.匿名函數(shù)的多種形式
# 無參數(shù) lambda_a = lambda :100 print(lambda_a()) # 100 # 一個(gè)參數(shù) lambda_b = lambda num: num * 10 print(lambda_b(1)) # 10 # 多個(gè)參數(shù) lambda_c = lambda a, b, c: a + b + c print(lambda_c(1, 10, 100)) # 111 # 表達(dá)式分支 lambda_d = lambda x: x if x > 5 else x + 1 print(lambda_d(4)) # 5 print(lambda_d(6)) # 6
6.lambda 作為一個(gè)參數(shù)傳遞
def sub_func(a, b, func):
print("a = ", a)
print("b = ", b)
print("a - b = ", func(a, b))
sub_func(3, 2, lambda a, b: a - b)
# 結(jié)果:
# a = 3
# b = 2
# a - b = 1
7. lambda函數(shù)與python內(nèi)置函數(shù)配合使用
sorted是Python中對(duì)列表排序的內(nèi)置函數(shù),我們使用lambda來獲取排序的key
member_list = [
{"price": 9},
{"price": 999},
{"price": 99}
]
new_list = sorted(member_list, key=lambda dict_: dict_["price"])
print(new_list) # [{'price': 9}, {'price': 99}, {'price': 999}]
number_list = [100, 77, 69, 31, 44, 56]
num_sum = list(map(lambda x: {str(x): x}, number_list))
print(num_sum) # [{'100': 100}, {'77': 77}, {'69': 69}, {'31': 31}, {'44': 44}, {'56': 56}]
map是Python中用來做映射的一個(gè)內(nèi)置函數(shù),接收兩個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè)函數(shù),第二個(gè)參數(shù)是一個(gè)可迭代對(duì)象,map會(huì)遍歷可迭代對(duì)象的值,然后將值依次傳遞給函數(shù)執(zhí)行。我們使用lambda來實(shí)現(xiàn)map中的函數(shù)參數(shù)。
8.lambda 作為函數(shù)的返回值
def discount_func(discount): return lambda price: discount * price p = discount_func(0.8) print(p) # <function discount_func.<locals>.<lambda> at 0x00000241352BAC10> print(p(100)) # 80.0
匿名函數(shù)可以作為一個(gè)函數(shù)的返回值,上面函數(shù)discount_func返回一個(gè)設(shè)定了折扣的匿名函數(shù)對(duì)象,調(diào)用這個(gè)對(duì)象,傳入價(jià)格,就可以得到折扣后的價(jià)格
到此這篇關(guān)于python基礎(chǔ)之匿名函數(shù)詳解的文章就介紹到這了,更多相關(guān)python匿名函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)爬蟲抓取小說功能示例【抓取金庸小說】
這篇文章主要介紹了python實(shí)現(xiàn)爬蟲抓取小說功能,結(jié)合具體實(shí)例形式分析了使用Python爬蟲抓取金庸小說的具體操作技巧,需要的朋友可以參考下2019-08-08
Pytorch中TensorDataset,DataLoader的聯(lián)合使用方式
這篇文章主要介紹了Pytorch中TensorDataset,DataLoader的聯(lián)合使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
python之如何將標(biāo)簽轉(zhuǎn)化為one-hot(獨(dú)熱編碼)
這篇文章主要介紹了python之如何將標(biāo)簽轉(zhuǎn)化為one-hot(獨(dú)熱編碼)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Python Pyvis庫創(chuàng)建交互式網(wǎng)絡(luò)圖實(shí)例探究
這篇文章主要為大家介紹了Python Pyvis庫創(chuàng)建交互式網(wǎng)絡(luò)圖的實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
python 對(duì)圖片進(jìn)行簡(jiǎn)單的處理
介紹一些圖片處理的Python代碼,有了這些處理代碼,我們可以很方便的處理一些圖片,Python這里處理圖片一般都使用Pillow包,有此需求的朋友可以參考下2021-06-06
Python串口通信的接收與發(fā)送的實(shí)現(xiàn)
串口通信是指通過串口進(jìn)行數(shù)據(jù)傳輸?shù)囊环N通信方式,本文就來介紹一下Python串口通信的接收與發(fā)送的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
Python利用Rasa框架和SMTPlib庫實(shí)現(xiàn)郵件回復(fù)助手
在現(xiàn)代辦公場(chǎng)景中,處理大量郵件是一項(xiàng)既耗時(shí)又容易出錯(cuò)的任務(wù),本文將詳細(xì)介紹如何使用Python的Rasa框架和SMTPlib庫建一個(gè)智能的郵件自動(dòng)回復(fù)助手,感興趣的可以了解下2025-04-04
Python基礎(chǔ)之賦值,淺拷貝,深拷貝的區(qū)別
這篇文章主要介紹了Python基礎(chǔ)之賦值,淺拷貝,深拷貝的區(qū)別,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們也有非常好的幫助,需要的朋友可以參考下2021-04-04

