在python開發(fā)中常規(guī)的函數(shù)在調(diào)用之前都需要先聲明,而python還有一種匿名函數(shù),有速寫函數(shù)的功能并且匿名函數(shù)不需要聲明也沒有函數(shù)名字,完全不需要擔(dān)心函數(shù)名沖突,具體的妙用還需要從實(shí)戰(zhàn)練習(xí)中多多積累經(jīng)驗(yàn)。
翁牛特網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,翁牛特網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為翁牛特?cái)?shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的翁牛特做網(wǎng)站的公司定做!
1 | lambdaa,b,c:expression |
匿名函數(shù)有以下幾個(gè)特點(diǎn):
1.匿名函數(shù)有關(guān)鍵字?lambda?修飾;
2.匿名函數(shù)冒號(hào)?:?之前的是函數(shù)的參數(shù),匿名函數(shù)可以是無參匿名函數(shù),也可以是帶參匿名函數(shù);
3.匿名函數(shù)冒號(hào)?:?之后是表達(dá)式,匿名函數(shù)不需要寫?return,表達(dá)式的結(jié)果就是返回值;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號(hào)):猿說python @Github:www.github.com @File:python_lambda.py @Time:2019/10/5 17:48 ? @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """ ? #不帶參數(shù)的普通函數(shù) defsing_dog(): ????returnTrue #不帶參數(shù)的匿名函數(shù) f0=lambda:True# 無參的匿名函數(shù),在匿名函數(shù)的冒號(hào)前面無需寫參數(shù) print(sing_dog()) print(f0()) ? print("***"*20) ? #帶參數(shù)的普通函數(shù) defsub(a,b): ????returna-b defadd(a,b): ????returna+b ? #帶參數(shù)的匿名函數(shù) f1=lambdaa,b:a-b f2=lambdaa,b:a+b ? print(sub(4,2)) print(add(4,2)) print(f1(4,2)) print(f2(4,2)) |
輸出結(jié)果:
1 2 3 4 5 6 7 | True True ************************************************************ 2 6 2 6 |
首先,匿名函數(shù)和普通函數(shù)對(duì)比之下,明顯能感覺到匿名函數(shù)的使用能讓代碼更加簡(jiǎn)潔,當(dāng)然匿名函數(shù)使用場(chǎng)景適用于比較簡(jiǎn)單的需求,對(duì)于復(fù)雜的計(jì)算,匿名函數(shù)是無法完成的;
其次,無參的匿名函數(shù),在匿名函數(shù)的冒號(hào)前面無需寫參數(shù);
假如有這樣一個(gè)需求:傳入一個(gè)字符串,對(duì)字符串根據(jù)空格拆分,并以字符串的形式返回拆分后的結(jié)果,示例代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | str1="laowang is sing_dog " ? #普通函數(shù) defget_str(str1): ????# 1.將字符串拆分為列表 ????list1=str1.split(" ") ????# 2.將列表轉(zhuǎn)為字符串并返回字符串 ????return"".join(list1) ? ????# 將1/2兩步合并為一步完成 ????# return "".join(str1.split(" ")) ? print("打印原始字符串:",str1) print("調(diào)用普通函數(shù)獲取字符串拆分結(jié)果:",get_str(str1)) ? #匿名函數(shù) f0=lambdaa:"".join(a.split(" ")) print("調(diào)用匿名函數(shù)獲取字符串拆分結(jié)果:",f0(str1)) |
輸出結(jié)果:
1 2 3 | 打印原始字符串:laowangissing_dog 調(diào)用普通函數(shù)獲取字符串拆分結(jié)果:laowangissing_dog 調(diào)用匿名函數(shù)獲取字符串拆分結(jié)果:laowangissing_dog |
如果對(duì)字符串轉(zhuǎn)換不太熟悉的童鞋請(qǐng)參考:字符串/列表/元組/字典之間的相互轉(zhuǎn)換
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 匿名函數(shù):通過條件表達(dá)式,返回最大值 f0=lambdax,y:xifx>yelsey print(f0(5,10)) ? # 匿名函數(shù):求三個(gè)參數(shù)的乘積 f1=lambdax,y,z:x*y*z print(f1(1,2,3)) ? # 缺省的匿名函數(shù) f2=lambdax,y=2:x+y#使用了默認(rèn)值 print(f2(10))#第二個(gè)參數(shù)為缺省參數(shù),使用默認(rèn)值2 ? # 不定長(zhǎng)參數(shù)的匿名函數(shù) f3=lambda*z:z#*z返回的是一個(gè)元祖 print(f3('hello',False)) ? # 不定長(zhǎng)參數(shù)的匿名函數(shù) f4=lambda**Arg:Arg#arg返回的是一個(gè)字典 print(f4(a=1,b=2,k="hello")) |
輸出結(jié)果:
1 2 3 4 5 | 10 6 12 ('hello',False) {'a':1,'b':2,'k':'hello'} |
如果對(duì)python不定長(zhǎng)參數(shù)*argc,**kargcs 不太熟悉的話,可以在看一遍這篇文章:python函數(shù)不定長(zhǎng)參數(shù) *argc,**kargcs
?
其實(shí)匿名函數(shù)作為函數(shù)參數(shù)傳參和普通函數(shù)傳參沒什么區(qū)別,示例代碼如下:
1 2 3 4 5 6 7 8 9 10 | deffunction1(a,b,): ????returnaifa>belseb#返回最大值 ? # 1.定義匿名函數(shù) f0=lambdab:b*10 # 2.匿名函數(shù)作為參數(shù),調(diào)用普通函數(shù) function1(100,f0(5)) ? # 上面兩行代碼合并為一行 function1(100,(lambdab:b*10)(5)) |
?
1.匿名函數(shù)可以是無參匿名函數(shù)也可以是有參匿名函數(shù);
2.匿名函數(shù)不僅可以直接當(dāng)作函數(shù)調(diào)用,還能直接作為函數(shù)中的參數(shù)直接使用;
?
?
1.python函數(shù)聲明和調(diào)用
2.python字典推導(dǎo)式
3.python列表推導(dǎo)式
4.python函數(shù)不定長(zhǎng)參數(shù) *argc,**kargcs
?
轉(zhuǎn)載請(qǐng)注明:猿說Python???python匿名函數(shù)
?
網(wǎng)站題目:python匿名函數(shù)lambda(20)
地址分享:http://aaarwkj.com/article14/psogge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、ChatGPT、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)