Lambda 表達式

“Lambda 表達式”(lambda expression)是一個匿名函數,Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。Lambda表達式可以表示閉包。


lambda所表示的匿名函數的內容應該是很簡單的,如果複雜的話,就重新定義一個函數吧。


兩種使用場景:

應用在函數式編程中

Python提供了很多函數式編程的特性,如:map、reduce、filter、sorted等這些函數都支持函數作爲參數,lambda函數就可以應用在函數式編程中。如下:

# 需求:將列表中的元素按照絕對值大小進行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))

當然,也可以如下:

list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):    
    return abs(x)
sorted(list1,key=get_abs)

只不過這種方式的代碼看起來不夠Pythonic(一種python代碼標準)——具體可學習書籍——編寫高質量代碼:改善python程序的91個建議


應用在閉包中

def get_y(a,b):     
    return lambda x:ax+b
    
y1 = get_y(1,1)
y1(1) # 結果爲2

當然,也可以用常規函數實現閉包,如下:

def get_y(a,b):    
    def func(x):        
        return ax+b    
return func

y1 = get_y(1,1)
y1(1) # 結果爲2


Python之禪中有這麼一句話:Explicit is better than implicit(明瞭勝於晦澀),一切以保證好的可讀性爲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章