深入理解 Python 中的 Lambda 表達式
更新日期: 2024 年 10 月 9 日
在學習 Python 的過程中,你可能會聽到 Lambda 表達式 這個名詞。
Lambda 表達式是一種匿名函式,允許你在需要函式的地方快速定義一個簡短的函式。
對於新手來說,理解 Lambda 表達式可以讓你寫出更簡潔、更高效的代碼。
本文將為你詳細介紹 Python 中的 Lambda 表達式。
什麼是 Lambda 表達式?
Lambda 表達式,也稱為匿名函式,是一種沒有名稱的簡短函式。
它可以在一行代碼中定義,並立即使用。
Lambda 表達式主要用於需要簡單函式且不想正式定義一個函式的場合,特別是在需要將函式作為參數傳遞的情況下。
Lambda 表達式的語法
Lambda 表達式的基本語法如下:
lambda 參數列表: 表達式
lambda
:關鍵字,表示這是一個 Lambda 表達式。參數列表
:傳遞給函式的參數,可以有多個,用逗號分隔。表達式
:一個表達式,計算後返回值。
示例
# 傳統函式定義
def add(x, y):
return x + y
# 等價的 Lambda 表達式
add = lambda x, y: x + y
# 使用 Lambda 表達式
result = add(5, 3)
print(result) # 輸出:8
Lambda 表達式的應用
與高階函式結合使用
Lambda 表達式常與高階函式一起使用,如 map()
、filter()
、sorted()
等。
使用 map()
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x ** 2, numbers))
print(squares) # 輸出:[1, 4, 9, 16, 25]
使用 filter()
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 輸出:[2, 4]
使用 sorted()
與 key
參數
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 20},
{'name': 'Charlie', 'age': 23}
]
# 根據年齡排序
sorted_students = sorted(students, key=lambda student: student['age'])
print(sorted_students)
# 輸出:
# [{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 23}, {'name': 'Alice', 'age': 25}]
作為回調函式
Lambda 表達式可以用作回調函式,例如在 GUI 程式設計中。
import tkinter as tk
root = tk.Tk()
button = tk.Button(root, text='點我', command=lambda: print('按鈕被點擊'))
button.pack()
root.mainloop()
注意事項
- 僅限單一表達式:Lambda 表達式的主體只能包含一個表達式,不能包含多個語句或複雜的邏輯。
- 可讀性問題:過度使用 Lambda 表達式可能會降低代碼的可讀性。對於複雜的函式,建議使用普通的函式定義。
- 調試困難:由於 Lambda 表達式沒有名稱,當出現錯誤時,調試可能比較困難。
結論
Lambda 表達式是 Python 中強大且靈活的工具,適用於定義簡短的匿名函式。
通過理解和合理使用 Lambda 表達式,你可以使你的代碼更加簡潔和高效。
然而,應該注意不要過度使用,以免影響代碼的可讀性。
進一步學習
- 高階函式:深入了解
map()
、filter()
、reduce()
等高階函式。 - 函式式編程:探索 Python 中的函式式編程概念。
- 裝飾器(Decorator):學習如何使用函式作為參數和返回值的高級用法。