含義
不再使用def 語句定義函數。
爲了解決一些功能簡單的需求而使用一句話函數解決,
優點
- 使用python寫一些腳本時,使用匿名函數可以省去定義函數得過程,讓代碼更精簡;
- 對於一些抽象的,不會被別的地方重複使用的函數,使用lambda可以省去函數命名的過程;
- 使代碼更易理解
格式
函數名 = lambda 參數 : 返回值
#定義多個參數時,使用逗號隔開
#調用時,直接函數名(參數)即可
實例
- 單個參數匿名函數
def calc(n):
return n**n
print(calc(10))
上面的代碼使用匿名函數爲:
calc = lambda n:n**n
print(calc(10))
- 多個參數匿名函數
calc = lambda a,b,c:a*b*c
print(calc(1,2,3))
- 對字典排序
infors = [{"name":"wang","age":11},{"name":"xiaoming","age":20},{"name":"banzhang","age":10}]
#根據age對字典排序
infors.sort(key=lambda x:x['age'])
print(infors)
#執行結果:
#[{'name': 'banzhang', 'age': 10}, {'name': 'wang', 'age': 11}, {'name': 'xiaoming', 'age': 20}]
- lambda與其他功能函數合用
#注:map函數接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,並把結果作爲新的餓list返回。
res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
print(i)
- 把lambda當成一個變量
#把lambda當成一個變量
def test(a,b,func):
result = func(a,b)
return result
num = test(11,22,lambda x,y:x+y)
print(num)