解讀python的lambda關鍵字

2021-09-12 07:31:52 字數 1301 閱讀 2135

lambda是python程式語言中使用頻率較高的乙個關鍵字。那麼,什麼是lambda?它有哪些用法?

這裡,我們通過閱讀各方資料,總結了關於python中的lambda的「乙個語法,三個特性,四個用法,乙個爭論」。

在python中,lambda的語法是唯一的。其形式如下:

lambda argument_list: expression

其中,lambda是python預留的關鍵字,argument_list和expression由使用者自定義。具體介紹如下:

a, b

a=1, b=2

*args

**kwargs

a, b=1, *args

空none

a + b

sum(a)

1 if a >10 else 0

lambda函式有如下特性:

下面是一些lambda函式示例:

由於lambda語法是固定的,其本質上只有一種用法,那就是定義乙個lambda函式。在實際中,根據這個lambda函式應用場景的不同,可以將lambda函式的用法擴充套件為以下幾種:

例如,執行語句add=lambda x, y: x+y,定義了加法函式lambda x, y: x+y,並將其賦值給變數add,這樣變數add便成為具有加法功能的函式。例如,執行add(1,2),輸出為3。

例如,為了把標準庫time中的函式sleep的功能遮蔽(mock),我們可以在程式初始化時呼叫:time.sleep=lambda x:none。這樣,在後續**中呼叫time庫的sleep函式將不會執行原有的功能。例如,執行time.sleep(3)時,程式不會休眠3秒鐘,而是什麼都不做。

函式的返回值也可以是函式。例如return lambda x, y: x+y返回乙個加法函式。這時,lambda函式實際上是定義在某個函式內部的函式,稱之為巢狀函式,或者內部函式。對應的,將包含巢狀函式的函式稱之為外部函式。內部函式能夠訪問外部函式的區域性變數,這個特性是閉包(closure)程式設計的基礎,在這裡我們不展開。

部分python內建函式接收函式作為引數。典型的此類內建函式有這些。

另外,部分python庫函式也接收函式作為引數,例如gevent的spawn函式。此時,lambda函式也能夠作為引數傳入。

事實上,關於lambda在python社群是存在爭議的。python程式設計師對於到底要不要使用lambda意見不一致。

關於lambda的爭執沒有定論。在實際中,是否使用lambda程式設計取決於程式設計師的個人喜好。

以上就是我們總結的關於python中的lambda的「乙個語法,三個特性,四個用法,乙個爭論」。如有紕漏之處,歡迎批評指正。

原文: 

python函式解讀 python 函式解讀

1 strip 函式 用於移除字串頭尾指定的字元 預設為空格或換行符 或字串行 包括 n r t 注意 該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元 語法 s.strip rm 刪除s字串中開頭 結尾處,位於 rm刪除序列的字元 s.lstrip rm 刪除s字串中開頭處,位於 rm刪除...

python解讀 Python再次解讀筆記

書讀百遍,其義自見。如果乙個字串包含很多需要轉義的字元,對每乙個字元都進行轉義會很麻煩。為了避免這種情況,我們可以在字串前面加個字首r,表示這是乙個 raw 字串,裡面的字元就不需要轉義了。布林運算 1.在計算a and b時,如果 a 是 false,則根據與運算法則,整個結果必定為 false,...

python的lambda的語法

python 純文字檢視 複製 1g lambdax x 1 看一下執行的結果 g 1 2 g 2 3 所以可以這樣認為,lambda作為乙個表示式,定義了乙個匿名函式,上例的 x為入口引數,x 1為函式體,用函式來表示為 python 純文字檢視 複製 12 3 以下定義乙個函式 defg x a...