什麼是匿名函數?
匿名函數就是沒有名字的函數python
爲何要有匿名函數?
由於隨着程序代碼的增多對於函數起名比較麻煩,而且有些函數只調用一次,那麼這種狀況,用匿名函數比較合適express
#如何定義一個匿名函數?函數
通常函數: 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 函數的語法只包含一個語句,以下:spa
lambda [arg1 [,arg2,.....argn]]:expression對象
# lambda 參數列表:return [表達式] 變量
# 因爲lambda返回的是函數對象(構建的是一個函數對象),因此須要定義一個變量去接收blog
實例一
# 可寫函數說明
sum = lambda x, y: x + y;
# 調用sum函數排序
print ("相加後的值爲 : ", sum( 10, 20 )) >>> 30 print ("相加後的值爲 : ", sum( 20, 20 )) >>> 40
實例二
對字典排序io
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}]
實例三class
把lambda當一個變量test
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在某些時候而後代碼更容易理解