匿名函数(lambda)是只用一次的简单函数的便捷写法,典型场景是作为回调或 key 函数传入高阶函数。

常见使用场景:

  • 排序自定义 keysorted(users, key=lambda u: u.age),或按多字段排序 key=lambda u: (u.dept, -u.salary)
  • map/filter/reducelist(map(lambda x: x * x, nums))filter(lambda x: x > 0, nums)。不过在 Python 中列表推导式 [x * x for x in nums] 通常更可读,是更推荐的写法。
  • 作为回调:GUI 事件绑定、异步回调等。
  • 构造简单函数工厂或延迟求值:如 defaultdict(lambda: 0)functools.partial 的轻量替代。

关键点:lambda 只能包含一个表达式,不能写语句和注解;逻辑稍复杂就应改用 def 定义具名函数,可读性和可测试性更好。易错点是循环中闭包捕获变量:funcs = [lambda: i for i in range(3)] 三个函数都返回 2,需用默认参数 lambda i=i: i 固定值。追问方向:lambda 与 def 的区别、闭包捕获机制。