如何在 Python 中使用 Lambda 函數(匿名函數)

了解如何在 Python 中使用 lambda 函數。掌握匿名函數、內聯回呼以及使用 lambda 鍵對列表資料進行排序。

在編輯器中嘗試此解決方案

概述

在Python中,函數是一等公民,這意味著它們可以分配給變量,作為參數傳遞給其他函數,並從函數返回。雖然標準函數是使用“def”關鍵字聲明的,但 Python 也提供了用於建立匿名內聯函數的簡寫語法:“lambda”函數。

lambda 函數是使用「lambda」關鍵字定義的,後面跟著參數清單、冒號和單一表達式。語法是“lambda 參數:表達式”。與「def」函數不同,lambda 不需要「return」語句;表達式的結果會自動回傳。它們僅限於單一邏輯行,這使得它們非常適合簡單的一次性操作。

Lambda 函數最常用作高階函數的參數,例如「sorted()」、「map()」和「filter()」。例如,您可以將 lambda 函數傳遞給「sorted()」的「key」參數來定義自訂排序條件,或將它們用作圖形或事件驅動應用程式中的輕量級回調函數。

程式碼和執行輸出

此腳本示範了使用 lambda 構造輕量級匿名函數。

lambda_functions.py
在編輯器中嘗試
# 1. Simple lambda function assigned to a variable
double = lambda x: x * 2
print("Double of 5:", double(5))

# 2. Multi-argument lambda
add = lambda x, y: x + y
print("Sum of 3 + 4:", add(3, 4))

# 3. Using lambda as a sorting key (sorting by age)
people = [
    {"name": "Alice", "age": 28},
    {"name": "Bob", "age": 22},
    {"name": "Charlie", "age": 35}
]
people.sort(key=lambda person: person["age"])
print("Sorted by age:", people)
端子輸出
Double of 5: 10
Sum of 3 + 4: 7
Sorted by age: [{'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 28}, {'name': 'Charlie', 'age': 35}]

逐步實施

  • 編寫 lambda 關鍵字,後面跟著以逗號分隔的參數名稱。
  • 放置一個冒號,後面跟著要計算並傳回的單一表達式。
  • 直接將 lambda 作為回調傳遞給sorted()、map() 或filter() 等函數。

常見問題解答

lambda 函數可以包含迴圈或多條語句嗎?

不,Python 中的 lambda 函數嚴格限制為單一表達式。如果需要複雜的邏輯、迴圈或變數賦值,則必須使用 def 定義標準函數。

我應該將 lambda 函數分配給變數嗎?

一般不會。 PEP 8 指南建議使用標準 def 語句,而不是將 lambda 指派給變量,因為標準函數提供更好的堆疊追蹤名稱。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。