python——匿名函數


什么是匿名函數?
  匿名函數就是沒有名字的函數

為什么要有匿名函數?
  因為隨着程序代碼的增多對於函數起名比較麻煩,並且有些函數只調用一次,那么這種情況,用匿名函數比較合適


#如何定義一個匿名函數?

一般函數:
def test(x,y):
    return x + y
res = test(1,2)
print(res)
>>> 3 匿名函數: res = (lambda x,y: x+y)(1,2) print(res)
>>> 3

語法
lambda 函數的語法只包含一個語句,如下:

  lambda [arg1 [,arg2,.....argn]]:expression

  # lambda 參數列表:return [表達式] 變量
  # 由於lambda返回的是函數對象(構建的是一個函數對象),所以需要定義一個變量去接收

實例一
  # 可寫函數說明
    sum = lambda x, y: x + y;
  # 調用sum函數

print ("相加后的值為 : ", sum( 10, 20 ))
>>> 30
print ("相加后的值為 : ", sum( 20, 20 )) 
>>> 40

實例二
  對字典排序

infos = [
{'name':'zhangsan','age':23},
{'name':'lisi','age':24},
{'name':'wangwu','age':12},
{'name':'zhaoliu','age':33},
{'name':'liuer','age':23}
]
infos.sort(key=lambda x:x['age'])
print(infos)
>>> [{'name': 'wangwu', 'age': 12}, {'name': 'zhangsan', 'age': 23}, {'name': 'liuer', 'age': 23}, {'name': 'lisi', 'age': 24}, {'name': 'zhaoliu', 'age': 33}]

實例三

把lambda當一個變量

def test(a,b,func):
    result = func(a,b)
    return result

num = test(11,22,lambda x,y:x+y)
print(num)
>>> 33

匿名函數優點
  • 使用Python寫一些腳本時,使用lambda可以省去定義函數的過程,讓代碼更加精簡。

  • 對於一些抽象的,不會被別的地方再重復使用的函數,有時候函數起個名字也是個難題,使用lambda不需要考慮命名的問題

  • 使用lambda在某些時候然后代碼更容易理解

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM