全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-19 6 分钟 ✍️ juanwangdev

Python lambda 表达式

lambda 创建匿名函数,语法简洁,适合简单的单行操作。

基本语法

Python
lambda 参数: 表达式

# 等价于
def func(参数):
    return 表达式

基本用法

Python
# 无参数
f = lambda: 'Hello'
print(f())  # Hello

# 单参数
square = lambda x: x ** 2
print(square(5))  # 25

# 多参数
add = lambda x, y: x + y
print(add(3, 5))  # 8

# 默认参数
greet = lambda name='World': f'Hello, {name}'
print(greet())        # Hello, World
print(greet('Alice')) # Hello, Alice

与高阶函数配合

Python
# map
numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x ** 2, numbers)
print(list(squared))  # [1, 4, 9, 16, 25]

# filter
evens = filter(lambda x: x % 2 == 0, numbers)
print(list(evens))  # [2, 4]

# sorted
pairs = [(1, 'one'), (3, 'three'), (2, 'two')]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(sorted_pairs)  # [(1, 'one'), (3, 'three'), (2, 'two')]

排序场景

Python
# 按字典键排序
students = [{'name': 'Alice', 'age': 25},
            {'name': 'Bob', 'age': 20},
            {'name': 'Charlie', 'age': 30}]
by_age = sorted(students, key=lambda s: s['age'])
print(by_age)  # 按年龄升序

# 多条件排序
by_name_age = sorted(students, key=lambda s: (s['name'], s['age']))

# 降序
by_age_desc = sorted(students, key=lambda s: s['age'], reverse=True)

条件表达式

Python
# 三元表达式
classify = lambda x: 'positive' if x > 0 else 'negative' if x < 0 else 'zero'
print(classify(5))   # positive
print(classify(-3))  # negative
print(classify(0))   # zero

# 取最大值
max_val = lambda a, b: a if a > b else b
print(max_val(10, 20))  # 20

立即调用

Python
# IIFE 模式
result = (lambda x, y: x + y)(3, 5)
print(result)  # 8

闭包捕获

Python
# 捕获外部变量
def make_multiplier(n):
    return lambda x: x * n

double = make_multiplier(2)
triple = make_multiplier(3)
print(double(5))  # 10
print(triple(5))  # 15

使用限制

限制说明
单表达式不能包含多条语句
无语句不能包含 print、赋值等
无文档无法添加 docstring
Python
# 错误示例:多语句
# lambda x: print(x); return x  # 语法错误

# 复杂逻辑应使用普通函数
def process(x):
    print(x)
    return x ** 2

lambda vs def

特性lambdadef
语法单行多行
名称匿名有名
复杂度简单可复杂
可读性较低较高
适用场景临时使用复用函数

要点总结

  • lambda 语法:lambda 参数: 表达式
  • 只能包含单个表达式,不能有语句
  • 常用于高阶函数参数、排序键函数
  • 复杂逻辑应使用 def 定义函数
  • 可捕获外部变量形成闭包
  • 保持简洁,避免过度使用

📝 发现内容有误?点击此处直接编辑

← 上一篇 Python functools 工具模块
下一篇 → Python 偏函数 partial
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库