天天看點

Python:lambda表達式 (匿名函數)及用法詳解

lambda表達式介紹

python中有一種靈活,便捷的且具有函數功能的表達式:lambda表達式!

lambda表達式,又稱匿名函數,是現代各種程式設計語言争相引入的一種文法,其功能堪比函數,設計卻比函數簡潔。

如果說函數是命名的、便于複用的代碼塊,那麼lambda 表達式則是功能更靈活的代碼塊,它可以在程式中被傳遞和調用。lambda 表達式可以用來替換局部函數(感興趣的讀者可以自行查閱“局部函數”),下面為大家示範lambda表達式的具體用法。

lambda表達式定義

首先以一個代碼例子讓大家對lambda表達式有一個直覺的認識:

Python:lambda表達式 (匿名函數)及用法詳解

lambda表達式範例一

從上述代碼示例可以看出,lambda 表達式的文法格式為:

  • lambda [parameter_list] : 表達式

    根據其文法格式可以得到lambda 表達式的兩個要點:

  • lambda 表達式必須使用 lambda 關鍵字定義。
  • 在 lambda 關鍵字之後、冒号左邊為參數清單,可不帶參數,也可有多個參數。若有多個參數,則參數間用逗号隔開,冒号右邊為 lambda 表達式的傳回值。

    lambda 表達式的本質是匿名的、單行函數體的函數,故lambda 表達式可以寫成函數的形式。例如,對于如下 lambda 表達式:

  • lambda x , y : x * y

    改寫為函數形式如下:

    def add(x, y):return x * y

即函數定義可以使用簡化方式:當函數體隻有一行代碼時,可直接把函數的代碼體放在與函數頭同一行。

本例中使用了多種python的小技巧,包括python推導式,map函數,lambda表達式等。

Python:lambda表達式 (匿名函數)及用法詳解

**一個問題:**感興趣的讀者可以将上述代碼進行全寫,深入了解下lambda表達式。

  • 對于單行代碼函數,使用 lambda 表達式可省去定義函數的複雜過程,讓代碼更加簡潔。
  • 對于無需多次使用的函數,由于lambda 表達式在用完之後立即釋放的特點,提升了程式性能