You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套lambda表达式代码运行逻辑及参数绑定规则求解析

Python lambda嵌套调用逻辑分步拆解

原运行代码如下:

def foo(y):
    return lambda x: x(x(y))
def bar(x):
    return lambda y: x(y)
print((bar)(bar)(foo)(2)(lambda x:x+1))

我们按照从左到右的调用顺序逐段拆解,所有参数均为当前函数的局部作用域变量,同名参数不同层级指代完全不同:

  • 第一步:执行bar(bar)
    • 本次bar函数的入参x绑定为bar函数本身
    • 按bar的定义,返回匿名函数:lambda y: bar(y)
  • 第二步:将第一步返回的匿名函数传入参数foo执行,即(lambda y: bar(y))(foo)
    • 本次匿名函数的入参y绑定为foo函数
    • 执行逻辑为bar(y),等价于bar(foo)
    • 本次bar函数的入参x绑定为foo函数,返回匿名函数:lambda y: foo(y)
  • 第三步:将第二步返回的匿名函数传入参数2执行,即(lambda y: foo(y))(2)
    • 本次匿名函数的入参y绑定为整数2
    • 执行逻辑为foo(y),等价于foo(2)
    • 本次foo函数的入参y绑定为整数2,返回匿名函数:lambda x: x(x(2))
  • 第四步:将第三步返回的匿名函数传入参数lambda x:x+1执行(我们临时命名该函数为add1方便理解,功能是返回入参+1),即(lambda x: x(x(2)))(add1)
    • 本次匿名函数的入参x绑定为add1函数
    • 执行逻辑为x(x(2)),等价于add1(add1(2))
    • 先计算内层add1(2)得到3,再计算add1(3)得到4

最终print输出的结果为4。

内容的提问来源于stack exchange,提问作者user16984591

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:45:02