python中lambda匿名函數詳解

在Python中,不通過def來聲明函數名字,而是通過lambda關鍵字來定義的函數稱為匿名函數

關鍵字lambda表示匿名函數

語法

lambda 參數:表達式

先寫lambda關鍵字,然後依次寫匿名函數的參數,多個參數中間用逗號連接,然後是一個冒號,冒號後面寫返回的表達式

lambda函數比普通函數更簡潔

匿名函數有個好處:函數沒有名字,不必擔心函數名沖突

匿名函數與普通函數的對比 :

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適用於多個參數、一個返回值的情況(匿名函數有個限制,就是隻能有一個表達式,不用寫return,返回值就是該表達式的結果),可以用一個變量來接收,變量是一個函數對象,執行這個函數對象的結果與執行一個普通函數的結果是一樣的

匿名函數的多種形式:

#無參數 
lambda_a = lambda: 100 
print(lambda_a()) # 100
 
#一個參數 
lambda_b = lambda num: num * 10 
print(lambda_b(5)) # 50
 
#多個參數 
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的參數可以0個到多個,並且返回的表達式可以是一個復雜的表達式,隻要最後的值是一個值就行瞭

此外,匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用該函數:

f = lambda x: x * x 
print(f) # <function <lambda> at 0x00000253B601B598> 
print(f(5)) # 25

lambda作為一個參數傳遞

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作為函數的返回值

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

匿名函數可以作為一個函數的返回值

在上面的代碼中,func返回的是一個匿名函數,返回的是一個函數對象,當我們執行這個函數時,可以得到lambda函數的結果

註意:其中的a,b兩個參數是func中的參數,但我們執行返回的函數return_func時,已經不在func的作用域內瞭,而lambda函數仍然能使用a,b參數,說明lambda函數會將它的運行環境保存一份,一直保留到它自己執行的時候使用

到此這篇關於python中lambda匿名函數詳解的文章就介紹到這瞭,更多相關python lambda匿名函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: