python基礎之匿名函數詳解
1.匿名函數介紹
匿名函數指一類無須定義標識符的函數或子程序。Python用lambda語法定義匿名函數,隻需用表達式而無需申明。
在python中,不通過def來聲明函數名字,而是通過 lambda 關鍵字來定義的函數稱為匿名函數。
lambda函數能接收任何數量(可以是0個)的參數,但隻能返回一個表達式的值,lambda函數是一個函數對象,直接賦值給一個變量,這個變量就成瞭一個函數對象。
2.語法
lambda 參數:表達式
3.使用場景
(1)需要將一個函數對象作為參數來傳遞時,可以直接定義一個lambda函數(作為函數的參數或是返回值)
(2)要處理的業務符合 lambda 函數的情況(任意多個參數和一個返回值),並且隻有一個地方會使用這個函數,不會在其他地方重用,可以使用lambda函數
4.匿名函數和普通函數的對比
def sum_func(a, b, c): return a + b + c # 將匿名函數對象賦值給 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.匿名函數的多種形式
# 無參數 lambda_a = lambda :100 print(lambda_a()) # 100 # 一個參數 lambda_b = lambda num: num * 10 print(lambda_b(1)) # 10 # 多個參數 lambda_c = lambda a, b, c: a + b + c print(lambda_c(1, 10, 100)) # 111 # 表達式分支 lambda_d = lambda x: x if x > 5 else x + 1 print(lambda_d(4)) # 5 print(lambda_d(6)) # 6
6.lambda 作為一個參數傳遞
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) # 結果: # a = 3 # b = 2 # a - b = 1
7. lambda函數與python內置函數配合使用
sorted是Python中對列表排序的內置函數,我們使用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中用來做映射的一個內置函數,接收兩個參數,第一個參數是一個函數,第二個參數是一個可迭代對象,map會遍歷可迭代對象的值,然後將值依次傳遞給函數執行。我們使用lambda來實現map中的函數參數。
8.lambda 作為函數的返回值
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
匿名函數可以作為一個函數的返回值,上面函數discount_func返回一個設定瞭折扣的匿名函數對象,調用這個對象,傳入價格,就可以得到折扣後的價格
到此這篇關於python基礎之匿名函數詳解的文章就介紹到這瞭,更多相關python匿名函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found