logo
31

Lambda 表达式

⏱️ 20分钟

Lambda:一次性小函数的轻量写法

你现在可能会困惑什么

“有 def 了,为什么还要 lambda?”

lambda 不是替代 def,而是给短小、临时规则提供更简洁表达。

一句话定义

lambda 是匿名函数,语法:lambda 参数: 表达式

生活类比

def 像正式文档,lambda 像临时便签。 一次性小规则用便签更快。

最小可运行例子

add = lambda a, b: a + b
print(add(3, 5))  # 8

高频场景:排序 key

students = [
    {"name": "Amy", "score": 88},
    {"name": "Bob", "score": 95},
    {"name": "Cara", "score": 91},
]

sorted_students = sorted(students, key=lambda s: s["score"], reverse=True)
print(sorted_students[0]["name"])  # Bob

课堂小测(3 分钟)

  1. lambda x: x * 2
  2. 把学生按 name 升序排序。
  3. 先按分数降序,再按名字升序排序。

课堂小测参考答案与判分点

  • 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
  • 判分点 1(正确性):主流程结果正确,关键分支可执行。
  • 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
  • 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。

迁移任务(课后)

把一个“临时格式化函数”从 def 改成 lambda,并解释是否更可读。

本节验收标准

你能独立做到:

  • 写出基础 lambda
  • 在排序与高阶函数中使用 lambda
  • 判断 lambda 与 def 的边界

常见报错与调试步骤(新手版)

  • 报错看不懂:先读最后一行错误类型(如 TypeErrorNameError),再回到对应代码行定位。
  • 不确定变量值:在关键位置临时 print(变量, type(变量)),先确认数据是否符合预期。
  • 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。

常见误区

  • 误区:所有函数都用 lambda 更 Pythonic。

  • 正解:复杂逻辑优先 def,便于维护和调试。

  • 误区:lambda 能写多条语句。

  • 正解:lambda 仅支持单表达式。