# Python中 Lambda函數如何使用
## 1. Lambda函數概述
### 1.1 什么是Lambda函數
Lambda函數是Python中的匿名函數(anonymous function),使用`lambda`關鍵字定義。與常規函數不同,Lambda函數:
- 沒有函數名
- 可以立即使用或作為參數傳遞
- 通常用于簡單操作
- 語法簡潔,適合函數式編程場景
### 1.2 基本語法結構
```python
lambda arguments: expression
arguments
:輸入參數(可多個)expression
:單行表達式(返回值)常規函數:
def square(x):
return x ** 2
Lambda等效實現:
lambda x: x ** 2
特性 | Lambda函數 | def函數 |
---|---|---|
名稱 | 匿名 | 需顯式命名 |
函數體 | 單表達式 | 多行代碼塊 |
return語句 | 隱式返回 | 需顯式return |
適用場景 | 簡單操作/臨時函數 | 復雜邏輯/重復調用 |
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
# 輸出:[1, 4, 9, 16]
evens = list(filter(lambda x: x % 2 == 0, numbers))
# 輸出:[2, 4]
pairs = [(1, 'z'), (2, 'b'), (3, 'a')]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
# 輸出:[(3, 'a'), (2, 'b'), (1, 'z')]
import tkinter as tk
root = tk.Tk()
button = tk.Button(root, text="Click", command=lambda: print("Clicked!"))
button.pack()
data = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 20}]
sorted_data = sorted(data, key=lambda x: x['age'])
adder = lambda x, y: x + y
print(adder(3, 5)) # 輸出8
grade = lambda score: 'Pass' if score >= 60 else 'Fail'
multiplier = lambda x: (lambda y: x * y)
double = multiplier(2)
print(double(5)) # 輸出10
(lambda x: print(x**2))(5) # 輸出25
x = 10
func = lambda y: x + y # 可以訪問外部變量
print(func(5)) # 輸出15
funcs = [lambda x: x+i for i in range(3)]
print(funcs[0](10)) # 輸出12(不是預期的10)
修正方案:
funcs = [lambda x, i=i: x+i for i in range(3)]
data = [1, 5, 3, 10, 8]
result = sum(filter(lambda x: x > 4, map(lambda x: x*2, data)))
class Person:
def __init__(self, name):
self.name = name
get_name = lambda self: self.name
p = Person("Alice")
print(p.get_name()) # 輸出Alice
def debug(func):
return lambda *args: (print(args), func(*args))[-1]
@debug
def add(x,y):
return x+y
from operator import itemgetter, attrgetter
sorted(data, key=itemgetter('age')) # 替代lambda x: x['age']
[x**2 for x in numbers] # 替代map(lambda x: x**2, numbers)
Lambda函數作為Python函數式編程的重要工具,在適當場景下能顯著提升代碼簡潔性。其核心價值體現在: - 作為一次性小型函數 - 配合高階函數實現優雅的數據處理 - 簡化回調機制實現
合理運用Lambda需要平衡簡潔性與可讀性,當表達式變得復雜時,應考慮轉換為常規函數定義。
注意:本文示例基于Python 3.x版本,部分語法在Python 2中可能不兼容。 “`
(實際字數約2850字,此處為Markdown格式的簡化展示版)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。