Python中的匿名函數-lambda

jopen 10年前發布 | 31K 次閱讀 Lambda Python開發

簡述


除了def語句之外,Python還提供了一種生成函數對象的表達式形式。這個表達式創建了一個之后能夠調用的函數,但是它返回了一個函數而不是將這個函數賦值給一個變量名稱。

lambda表達式


lambda的一般形式是關鍵字lambda,之后是一個或者多個參數,緊跟的是一個冒號,之后是一個表達式:
lambda argument1 argument2 ... :expression using arguments

lambda是一個表達式,而不是一個語句。

作為一個表達式,lambda返回了一個值,可以選擇性地賦值給一個變量名。相反,def語句總是得在頭部將一個新的函數賦值給一個變量名,而不是將這個函數作為結果返回。

lambda主體是一個單一的表達式,而不是一個代碼塊。


默認參數也能夠在lambda參數中使用,就像在def中使用一樣。
    >>>x = (lambda a = "fee", b = "fie", c = "foe": a + b +c)  
    >>>x("wee")  
    'weefiefoe'  

map函數


Python實際上提供了一個內置的工具,map函數。這個函數的主要功能是對一個序列對象中的每一個元素應用被傳入的函數,并且返回一個包含了所有函數調用結果的一個列表。

    >>>counters = [1,2,3]  
    >>def inc(x) :return x+10  
    ...  
    >>>list(map(inc, counters))  
    [11,12,13]  

由于map函數期待傳入一個函數,它恰好是lamba通常出現的一個地方:
 
    >>>list(map(lambda x:x + 3), counters)  
返回值為14,15,16.

為什么使用lambda


1. 使用Python寫一些執行腳本時,使用lambda可以省去定義函數的過程,讓代碼更加精簡。
2. 對于一些抽象的,不會別的地方再復用的函數,有時候給函數起個名字也是個難題,使用lambda不需要考慮命名的問題。
3. 使用lambda在某些時候讓代碼更容易理解。
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!