分類
編碼

Python def 和 lambda 語法和差異比較

我們來看看兩個功能相似的關鍵字。你不會把兩個沒用的嗎?

定義說明

我先給你舉個例子。

def add(x, y):
    return x + y
print(add(3,5))

結果如下:

8

函數是用 def 關鍵字編寫的。

add 是函數的名稱,要傳遞的參數定義為 x 和 y。

它有一個返回兩個值相加結果的函數。

如果將 3 和 5 作為參數傳遞給以這種方式創建的 add 函數,則可以看到結果為 8。

拉姆達描述

讓我們創建與上面相同的函數。

add = lambda x,y: x+y
print(add(2,3))

結果如下:

5

它使用關鍵字 lambda 接收 x 和 y 作為參數,並返回兩個值相加的結果。

默認情況下,Lambda 會創建未命名的函數。

你可以在一行中寫得更簡潔。

另外,不要使用 return 關鍵字。

它也可以通過將其分配給變量以與函數相同的方式使用。

如何使用它

讓我們看另一個使用示例來幫助您理解。

temp = [1,2,3,4,5]
result = list(filter(lambda x:x>2, temp))
print(result)

結果如下:

[3,4,5]

這是一個使用過濾器方法從元素為 1 到 5 的數組中僅選擇大於 2 的值的示例。

lambda 接收一個值,確定它是否大於 2,並返回 True 或 False 布爾值。

filter 方法將一個 lambda 分配給第一個參數,將一個數組分配給第二個參數。

它遍歷數組並產生一個結果,如果它大於 2 則保留該值,否則將其排除。

filter得到的結果用list方法以數組的形式創建並存儲在result變量中。

讓我們用一個函數創建完全相同的函數。

temp = [1,2,3,4,5]
def comp(x):
    return x > 2
result = list(filter(comp, temp))
print(result)

結果如下:

[3,4,5]

你如何實現它並不重要,但在這個例子中,lambda 更簡潔,對吧?

事實上,如果你看一下類型,def 和 lambda 實現都與函數相同。

因此,您可以將其視為 lambda 包含在函數中的概念。

總之,最好使用 def 關鍵字來創建一個需要重用的函數,而當你想創建一個簡單的一次性函數時,使用 lambda 會更好。

此帖子有 2 條回复。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

zh_TW繁體中文