lambda用于定义简洁的一行式匿名函数,语法为lambda参数:单个表达式,常配合map、filter等高阶函数使用,但不可含语句,复杂逻辑应改用def。

Python 的 lambda 表达式本身就是用来定义**简洁的一行式匿名函数**的,不需要额外“编写匿名匿名函数”——“匿名”只出现一次,重复是笔误。关键在于写得准确、清晰、不滥用。
lambda 的基本写法
lambda 后跟参数(可多个,用逗号分隔),冒号后是**单个表达式**(不是语句),自动返回该表达式结果:
-
lambda x: x * 2→ 接收一个参数x,返回x * 2 -
lambda a, b: a + b→ 接收两个参数,返回和 -
lambda: "hello"→ 无参数,返回字符串
常配合高阶函数使用
单独写 lambda 意义不大,通常传给 map()、filter()、sorted()、functools.reduce() 等:
-
list(map(lambda x: x ** 2, [1, 2, 3]))→[1, 4, 9] -
list(filter(lambda x: x > 0, [-2, -1, 0, 1, 2]))→[1, 2] -
sorted(["apple", "pie", "banana"], key=lambda s: len(s))→ 按长度排序
注意事项:什么不能做
lambda 只能包含**表达式**,不能含语句:
立即学习“Python免费学习笔记(深入)”;
- ✅ 支持:
lambda x: x if x > 0 else 0(条件表达式) - ❌ 不支持:
lambda x: print(x); return x * 2(分号、return、print 调用等语句) - ❌ 不支持赋值(如
lambda x: y = x + 1)、循环、异常处理等
什么时候不该用 lambda
如果逻辑稍复杂、需要复用、或影响可读性,直接用 def 更合适:
- 别写:
lambda x: x.strip().lower().replace(" ", "_") if x else "" - 建议写成普通函数:
def normalize_name(s): return s.strip().lower().replace(" ", "_") if s else ""


















