Grace's Dev Site
write关于我
闭坑指南 · Python#经典错误 #函数

闭包与晚绑定

循环里定义 lambda 时,变量在调用时才解析。

闭包与晚绑定

循环里:

funcs = [lambda: i for i in range(3)]

三个 lambda 共享同一个 i。循环结束后 i == 2,所以全都返回 2。

修复

  • 默认参数绑定当前值:lambda i=i: i
  • functools.partial
  • Python 3 可用生成器/列表推导直接产生结果,不必存 lambda

这是面试高频题,也是装饰器里常见的坑。

在线运行 Python

Pyodide