Python 的 lambda 是创建单表达式匿名函数的快捷方式,用于高阶函数参数等场景,但受限于无语句、不可多行、调试困难等,复杂逻辑应使用普通函数。
Python 的 lambda 是创建小型匿名函数的快捷方式,它不使用 def 关键字,也没有函
数名,适合在需要一个简单函数但又不想正式定义时使用——比如作为参数传给 map()、filter()、sorted() 等高阶函数。
lambda 表达式写法为:lambda 参数列表: 表达式。它只能包含一个表达式(不能是语句,如 if、for、return),且自动返回该表达式结果。
lambda x: x * 2 等价于 def f(x): return x * 2
lambda x, y: x + y 接收两个参数,返回和lambda 最常见用途是配合内置高阶函数,让代码更紧凑可读。
numbers = [1, 2, 3, 4, 5]
evens = list(filter(lambda x: x % 2 == 0, numbers)) # [2, 4]
squares = list(map(lambda x: x ** 2, numbers)) # [1, 4, 9, 16, 25]
fruits = [('apple', 3), ('banana', 1), ('cherry', 2)]
by_count = sorted(fruits, key=lambda x: x[1]) # 按元组第二个元素升序lambda 可以引用其定义时所在作用域的变量,形成闭包。注意变量是“后期绑定”的,循环中直接引用循环变量可能出乎意料。
funcs = [lambda x, i=i: x + i for i in range(3)]
print([f(10) for f in funcs]) # [10, 11, 12]
funcs = [lambda x: x + i for i in range(3)]
print([f(10) for f in funcs]) # [12, 12, 12]
lambda 不是越短越好,可读性优先。以下情况建议用普通函数:
,不如函数名直观不复杂但容易忽略。