深入理解 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()

注意事項

  1. 僅限單一表達式:Lambda 表達式的主體只能包含一個表達式,不能包含多個語句或複雜的邏輯。
  2. 可讀性問題:過度使用 Lambda 表達式可能會降低代碼的可讀性。對於複雜的函式,建議使用普通的函式定義。
  3. 調試困難:由於 Lambda 表達式沒有名稱,當出現錯誤時,調試可能比較困難。

結論

Lambda 表達式是 Python 中強大且靈活的工具,適用於定義簡短的匿名函式。

通過理解和合理使用 Lambda 表達式,你可以使你的代碼更加簡潔和高效。

然而,應該注意不要過度使用,以免影響代碼的可讀性。


進一步學習

  • 高階函式:深入了解 map()filter()reduce() 等高階函式。
  • 函式式編程:探索 Python 中的函式式編程概念。
  • 裝飾器(Decorator):學習如何使用函式作為參數和返回值的高級用法。

Similar Posts