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