1. 程式人生 > >python學習之-匿名函式

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一定要指向一個函式的記憶體地址