python學習之-匿名函式
什麼是匿名函式
匿名函式: 沒有名字的函式,意味著只能用一次就被回收
匿名函式用 lambda 表示
為何用匿名函式:用於臨時使用一次的功能
匿名函式的定義格式
lambda 引數,引數:表示式 #引數規則和有名函式是一樣的
lambda x,y:return x+y #這個位置的return是自帶的,所以寫表示式時候不需要寫
表示式解析:匿名函式 + 引數:表示式,將表示式的值用return返回
PS:匿名函式自動有一個返回值,自帶return,不能寫return,也不能寫語句,但是隻要有返回值的表示式都可以寫
匿名函式的呼叫方式
print(lambda x,y:x+y)(引數1,引數2)
PS:匿名函式都是與其他功能配合去一起用
匿名函式例項
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
用倪匿名函式獲取字典中工資最高的人的名字
print(max(salaries,key=lambda k:salaries[k])) #將匿名函式的返回值傳遞給key方法,告訴max方法對比的依據是什
邏輯原理就是max先遵循迭代器協議,將salaries的key取出來,然後傳給max裡面的key這個引數,在通過key這個引數傳給函式lamdb
函式內的引數k,引數k再將引數傳遞給表示式,最後獲取的值返回給key,max依據引數做出判斷
PS:這裡就是將字典的key傳遞給給匿名函式的引數k,然後將帶引數的匿名函式的放入max的key這個引數,讓max得到以什麼為依據去對比
匿名函式的詳解
lambda k:salar
print(min(salaries,key=lambda k:salaries[k]))
res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
print(res)
print(max(salaries.values()))
PS:max預設方法遵循迭代器協議,從字典中取出的值是key,迭代器協議是無法更改的
PS:max方法裡面有一個引數是key,這個key不是指字典的key,只是表示max方法的引數,這個key就是告訴max方法比較依據是什麼,key一定要指向一個函式的記憶體地址