





















在 Python 3 中,lambda 表达式(有时也写作“lambda 函数”)是一种创建匿名函数的简洁方式。所谓匿名,就是它没有显式的函数名,通常用于只需要一次使用的简单场景。
lambda 参数1, 参数2, ... : 表达式
x if cond else y)。return。# 普通函数
def add(x, y):
return x + y
# 等价的 lambda
add_lambda = lambda x, y: x + y
print(add_lambda(3, 5)) # 输出 8
注意:虽然可以把 lambda 赋值给变量,但这违背了“匿名”的初衷,更常见的用法是直接作为参数传递。
key 参数students = [("Alice", 25), ("Bob", 20), ("Charlie", 23)]
# 按年龄排序
students.sort(key=lambda student: student[1])
print(students) # [('Bob', 20), ('Charlie', 23), ('Alice', 25)]
filter() 配合过滤numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # [2, 4, 6]
map() 配合转换numbers = [1, 2, 3]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # [1, 4, 9]
reduce() 配合累计(需从 functools 导入)from functools import reduce
product = reduce(lambda a, b: a * b, [1, 2, 3, 4])
print(product) # 24
def)的区别| 特性 | lambda | def |
|---|---|---|
| 名称 | 匿名(没有函数名) | 有明确名称 |
| 函数体 | 仅限单个表达式 | 可以包含多条语句(循环、条件、赋值等) |
| 返回值 | 自动返回表达式结果 | 需显式 return |
| 可读性 | 简洁,但复杂逻辑时难以阅读 | 结构化,适合复杂逻辑 |
| 调试 | 栈跟踪中显示为 <lambda>,不易定位 |
显示函数名,便于调试 |
| 可重用性 | 通常一次性使用 | 可多次调用和复用 |
def 定义普通函数,以提高代码可读性。lambda x: print(x) 是合法的(print 是表达式,返回 None),但 lambda x: x=1 会报错。function 类型的对象,可以像普通函数一样被调用。在 Python 3 中,lambda 的行为基本没有变化,但需要注意:
print 在 Python 2 中是语句,不能在 lambda 中直接使用(除非 from __future__ import print_function),而 Python 3 中 print 是函数,可以直接用于 lambda。reduce() 被移到了 functools 模块,需要使用前导入。lambda 是 Python 中实现函数式编程风格的重要工具,适合编写短小、临时的内联函数。掌握它的使用可以让你写出更简洁高效的代码,但要记住:清晰胜于简洁——当逻辑变复杂时,请回归普通函数。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。