python中l(wèi)ambda匿名函數(shù)詳解
在Python中,不通過def來聲明函數(shù)名字,而是通過lambda關(guān)鍵字來定義的函數(shù)稱為匿名函數(shù)
關(guān)鍵字lambda表示匿名函數(shù)
語法
lambda 參數(shù):表達式
先寫lambda關(guān)鍵字,然后依次寫匿名函數(shù)的參數(shù),多個參數(shù)中間用逗號連接,然后是一個冒號,冒號后面寫返回的表達式
lambda函數(shù)比普通函數(shù)更簡潔
匿名函數(shù)有個好處:函數(shù)沒有名字,不必?fù)?dān)心函數(shù)名沖突
匿名函數(shù)與普通函數(shù)的對比 :
def sum_func(a, b, c): return a + b + c sum_lambda = lambda a, b, c: a + b + c print(sum_func(1, 10, 100)) # 111 print(sum_lambda(1, 10, 100)) # 111
可以看到,lambda適用于多個參數(shù)、一個返回值的情況(匿名函數(shù)有個限制,就是只能有一個表達式,不用寫return,返回值就是該表達式的結(jié)果),可以用一個變量來接收,變量是一個函數(shù)對象,執(zhí)行這個函數(shù)對象的結(jié)果與執(zhí)行一個普通函數(shù)的結(jié)果是一樣的
匿名函數(shù)的多種形式:
#無參數(shù) lambda_a = lambda: 100 print(lambda_a()) # 100 #一個參數(shù) lambda_b = lambda num: num * 10 print(lambda_b(5)) # 50 #多個參數(shù) lambda_c = lambda a, b, c, d : a + b + c + d print(lambda_c(1,2,3,4)) # 10 #表達式分支 lambda_d = lambda x: x if x % 2 == 0 else x + 1 print(lambda_d(6)) # 6 print(lambda_d(7)) # 8
可以看到,lambda的參數(shù)可以0個到多個,并且返回的表達式可以是一個復(fù)雜的表達式,只要最后的值是一個值就行了
此外,匿名函數(shù)也是一個函數(shù)對象,也可以把匿名函數(shù)賦值給一個變量,再利用變量來調(diào)用該函數(shù):
f = lambda x: x * x print(f) # <function <lambda> at 0x00000253B601B598> print(f(5)) # 25
lambda作為一個參數(shù)傳遞
def sub_func(a, b, func): print('a =', a) print('b =', b) print('a - b =',func(a, b)) sub_func(100, 1, lambda a, b: a - b) #a = 100 #b = 1 #a - b = 99
lambda作為函數(shù)的返回值
def func(a, b): return lambda c: a + b + c return_func = func(1, 10) print(return_func) # <function func.<locals>.<lambda> at 0x00000253B6472D90> print(return_func(100)) # 111
匿名函數(shù)可以作為一個函數(shù)的返回值
在上面的代碼中,func返回的是一個匿名函數(shù),返回的是一個函數(shù)對象,當(dāng)我們執(zhí)行這個函數(shù)時,可以得到lambda函數(shù)的結(jié)果
注意:其中的a,b兩個參數(shù)是func中的參數(shù),但我們執(zhí)行返回的函數(shù)return_func時,已經(jīng)不在func的作用域內(nèi)了,而lambda函數(shù)仍然能使用a,b參數(shù),說明lambda函數(shù)會將它的運行環(huán)境保存一份,一直保留到它自己執(zhí)行的時候使用
到此這篇關(guān)于python中l(wèi)ambda匿名函數(shù)詳解的文章就介紹到這了,更多相關(guān)python lambda匿名函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch 的損失函數(shù)Loss function使用詳解
今天小編就為大家分享一篇Pytorch 的損失函數(shù)Loss function使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python的標(biāo)準(zhǔn)模塊包json詳解
這篇文章主要介紹了Python的標(biāo)準(zhǔn)模塊包json詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03