什么是匿名函數?
匿名函數就是沒有名字的函數
為什么要有匿名函數?
因為隨着程序代碼的增多對於函數起名比較麻煩,並且有些函數只調用一次,那么這種情況,用匿名函數比較合適
#如何定義一個匿名函數?
一般函數: 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在某些時候然后代碼更容易理解