核心要点
知道 lambda 是单行匿名函数表达式
能举例 sorted/key、map、高阶 API
了解局限:单表达式、无语句、调试困难
简要回答
lambda 是仅含单个表达式的匿名函数,常用于 sorted 的 key、map/filter、回调等短逻辑;复杂逻辑应 def 具名函数。
标准回答
一、语法
lambda 参数: 表达式,表达式值即返回值,不能有 return、赋值等语句。
示例代码可以这样理解:
sorted(users, key=lambda u: u["age"])
list(map(lambda x: x * 2, nums))
button.on_click(lambda e: print("clicked"))
二、适用场景
- 一次性、极短逻辑作高阶函数参数
- GUI/事件回调占位
三、不适用
- 多行逻辑 → 用
def - 需要 docstring、类型注解、调试栈清晰
四、与 def 等价
lambda x, y: x + y ≡ def _anon(x, y): return x + y
Pandas .apply(lambda row: ...) 常见但大 DataFrame 上 Python lambda 慢,优先向量化。
回答思路
【定义】用一句话说清「什么是 Lambda 函数?适用于哪些场景」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:只罗列名词、不会举例;混淆相似概念;忽略工程约束(成本、延迟、数据质量)。不确定时应主动说明假设。
追问
追问 1:lambda 能包含 if 吗?
可用条件表达式:lambda x: x if x > 0 else 0。但不能写多行 if 块或 for 循环语句,那些需要 def 或生成器。
追问 2:为什么 lambda 里循环变量容易出 bug?
funcs = [lambda: i for i in range(3)] 每个 lambda 引用同一 i,调用时 i=3。修复:默认参数绑定 lambda i=i: i。
追问 3:operator 模块能替代哪些 lambda?
operator.itemgetter("key")、operator.attrgetter("attr")、operator.mul 等 C 实现更快,在 sorted/key 场景可替代简单 lambda。
🔗 相似问题
同一考点的不同问法,换着练更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习
