在開發(fā)當(dāng)中,一次使用的函數(shù)或者是我們不想命名的函數(shù),我們可以寫成 匿名函數(shù) 。這篇博客來分享一下 Python 匿名函數(shù) 。

樂亭網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)從2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
匿名函數(shù)是通過 lambda 關(guān)鍵字創(chuàng)建,而不是 def 關(guān)鍵字。
當(dāng)我們在傳入函數(shù)時(shí),有些時(shí)候,不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便。
在Python中,對匿名函數(shù)提供了有限支持。還是以map()函數(shù)為例,計(jì)算f(x)=x2時(shí),除了定義一個(gè)f(x)的函數(shù)外,還可以直接傳入匿名函數(shù):
map(lambda?x:?x?*?x,?[1,?2,?3,?4,?5,?6,?7,?8,?9])
[1,?4,?9,?16,?25,?36,?49,?64,?81]
通過對比可以看出,匿名函數(shù)lambda x: x * x實(shí)際上就是:
def?f(x):
return?x?*?x
關(guān)鍵字lambda表示匿名函數(shù),冒號(hào)前面的x表示函數(shù)參數(shù)。
匿名函數(shù)有個(gè)限制,就是只能有一個(gè)表達(dá)式,不用寫return,返回值就是該表達(dá)式的結(jié)果。
用匿名函數(shù)有個(gè)好處,因?yàn)楹瘮?shù)沒有名字,不必?fù)?dān)心函數(shù)名沖突。此外,匿名函數(shù)也是一個(gè)函數(shù)對象,也可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來調(diào)用該函數(shù):
f?=?lambda?x:?x?*?x
f
function?lambda?at?0x10453d7d0
f(5)
25
同樣,也可以把匿名函數(shù)作為返回值返回,比如:
def?build(x,?y):
return?lambda:?x?*?x?+?y?*?y
小結(jié)
Python對匿名函數(shù)的支持有限,只有一些簡單的情況下可以使用匿名函數(shù)。
希望能幫到你!
匿名函數(shù) 簡單的需要用函數(shù)去解決的問題 匿名函數(shù)的函數(shù)體 只有一行 也叫l(wèi)ambda表達(dá)式
python 使用 lambda 來創(chuàng)建匿名函數(shù)。
lambda函數(shù)的語法只包含一個(gè)語句,如下:
等價(jià)于
記住兩個(gè)關(guān)鍵:
初學(xué)的你,還是太難理解?
你可以將生成器理解為一個(gè)盒子,你可以向這個(gè)盒子里隨意添加元素,當(dāng)你需要的時(shí)候,再取出來用。
請看下面的例子:
作用:惰性求值(一邊循環(huán)一邊計(jì)算的機(jī)制),節(jié)省性能
舉個(gè)例子:斐波那契數(shù)列(0,1,1,2,3,5...),打印斐波那契數(shù)列前50個(gè)元素
當(dāng):
時(shí),我們可以使用匿名函數(shù)。
初學(xué)的你,還是太難理解?
你想實(shí)現(xiàn)一個(gè)求x的平方的函數(shù),但是這個(gè)函數(shù)太簡單,不值得專門def定義,同時(shí),你忘記了平方的英文如何拼寫,要是命名成 "pingfang",又顯得自己太low,于是乎,你可以不給這個(gè)函數(shù)起名字,還能實(shí)現(xiàn)它。這就是匿名函數(shù)lambda表達(dá)式。
比如:求一個(gè)數(shù)的平方
01 如果你是初學(xué)者,可以先不掌握生成器和匿名函數(shù),待學(xué)成python后,再行琢磨;
02 在實(shí)際工作中,生成器和匿名函數(shù)的使用頻次,相對較高,并且在面試中是高頻問點(diǎn)。
這里lambda x的x是函數(shù)的參數(shù),是lst的元素(這里是一個(gè)元組),
x[1]是函數(shù)的返回值,是lst元素(元組)的第2個(gè)元素即字符串,
所以,lst.sort(key=lambda x:x[1])是以lst元素(元組)的第二個(gè)元素為key排序,默認(rèn)為升序
排序后的lst為[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
print(lst[3][1][2])是打印排序后的lst中的第4個(gè)元素(元組)的第2個(gè)元素(字符串)的第3個(gè)字符,結(jié)果就是打印字符串two的字符o
函數(shù)是組織好,可重復(fù)使用的,用來實(shí)現(xiàn)相關(guān)功能的代碼段
函數(shù)提高了代碼的重復(fù)利用率和應(yīng)用的模塊性。
除Python自帶的函數(shù)之外,也可以自己創(chuàng)建函數(shù),叫做自定義函數(shù)
語法:
函數(shù)代碼塊以 def 開頭
參數(shù)為 輸入值 ,放于函數(shù)名后口號(hào)里面,
函數(shù)內(nèi)容以冒號(hào):開始,函數(shù)體縮進(jìn), return 返回 輸出值
函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值,此時(shí),如果多個(gè)函數(shù)則不需要按照指定順序。
在定義函數(shù)時(shí),指定參數(shù)默認(rèn)值。調(diào)用時(shí)如果不傳入?yún)?shù),則使用默認(rèn)值
不定長部分如果沒有指定參數(shù),傳入是一個(gè)空元組
加了 兩個(gè)星號(hào) ** 的參數(shù)會(huì)以字典的形式導(dǎo)入
/ 用來指明函數(shù)形參必須使用指定位置參數(shù),不能使用關(guān)鍵字參數(shù)的形式。
3.8版本之后的才能使用
不使用 def 定義函數(shù),沒有函數(shù)名
lamdba主體時(shí)一個(gè)表達(dá)式,而不是代碼塊,函數(shù)體比def簡單很多
定義在函數(shù)內(nèi)部的為局部變量,僅能在函數(shù)內(nèi)部使用
定義在函數(shù)外部的為全局變量,可在全局使用
模塊是將包含所有定義的函數(shù)和變量的文件,一般將同類功能的函數(shù)組和在一起稱為模塊。
模塊需要導(dǎo)入后,在調(diào)用相應(yīng)函數(shù)進(jìn)行使用
模塊導(dǎo)入的方法:
從模塊中導(dǎo)入一個(gè)指定的部分
把一個(gè)模塊的所有內(nèi)容全都導(dǎo)入
名稱欄目:python怎么匿名函數(shù) Python中匿名函數(shù)
轉(zhuǎn)載源于:http://chinadenli.net/article20/hghjco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、定制網(wǎng)站、域名注冊、網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)