06.17 Python Lambda 表達式

Python Lambda 表達式

本文簡單介紹一下 lambda 表達式,通過這篇文章,帶你瞭解它的用法以及在什麼時候使用。

在 Python 中,使用關鍵字 lambda 表達式定義一個小的匿名函數。lambda定義的函數和使用 def 一樣。它也能用在任何正常的函數可以用的地方。

下面例子定義了一個函數,返回兩個數的和:

Python Lambda 表達式

輸出:

Python Lambda 表達式

它和使用 def 定義效果是一樣的。

Python Lambda 表達式

現在,你肯定想知道為什麼有個 lambda 呢?明明用函數就可以實現。 除了使代碼更簡潔外,還有什麼好處呢?

看如下的例子:

Python Lambda 表達式

這個例子沒有賦值給一個變量,而是直接用括號 () 包圍了 lambda 表達式,然後立刻進行了調用。

看到這裡,你可能明白了,使用 lambda 就是一個表達式,它可以用在正常的函數用不到的地方。

什麼時候用 lambda 表達式


其實 lambda 表達式可以用在函數用到的任何地方。因為 lambda 函數是匿名的,你不需要指定名稱。

最常見的使用的地方就是 sorted() 函數。

Python Lambda 表達式

sorted() 函數根據指定的key,來決定序列的排序。這個的key使用 lambda x: x**2 使用每項的平方來決定每項在列表的位置。

系統內置函數 map() 使用例子:

Python Lambda 表達式

map() 函數接收一個函數,一個序列,函數應用序列的每一項,然後返回。

使用 filter() 函數。

Python Lambda 表達式

filter() 函數過濾序列中的值,它不是每項都返回,而是函數結果返回 True 的項才返回。

lambda 也可以用在函數閉包中, 閉包是指當程序流離開指定的函數時,閉包的函數依然能記得當時的變量值。

Python Lambda 表達式

函數 adder 定義了個閉包,例如當 adder(5) 調用完之後賦值給變量 add5,再調用 add5,它依然記得 x=5,所以調用函數 add5(3) 輸出8。


分享到:


相關文章: