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

如何解读与拆解Python复杂Lambda表达式?附NUS考题解析需求

拆解复杂Lambda与高阶函数:一步步推导NUS试卷题目结果

先看题目中的代码:

def combinator(y):
    return (lambda x: lambda y: x(y))(lambda x:y)
combinator(lambda x:x*10)(11)(12)

我们分三步拆解整个调用过程:

1. 先分析combinator(y)的返回值

把combinator里的返回语句拆成两部分看:

  • 外层Lambda:lambda x: lambda y: x(y),这是一个接收参数x、返回另一个Lambda的函数。
  • 传入的参数:lambda x:y,这里的y是combinator函数的入参(注意:这个Lambda里的y属于外层combinator的作用域,不会被后续局部变量覆盖)。

当外层Lambda接收lambda x:y作为x后,返回lambda y: x(y)。代入x的实际值,这个返回的函数等价于:

lambda y: (lambda x: y)(y)

执行(lambda x: y)(y)时,虽然传入了参数,但它的返回值是外层combinator的y,和传入的参数无关。因此combinator(y)最终等价于:

def combinator(y):
    return lambda _: y

也就是返回一个忽略输入、直接返回y的函数。

2. 追踪combinator(lambda x:x*10)的结果

把lambda x:x*10作为y传入combinator,得到的返回值是:

lambda _: lambda x:x*10

这个函数不管接收什么参数,都会返回乘法函数lambda x:x*10。

3. 完成后续调用(11)(12)

  • 调用(11):给上面的函数传参数11,返回lambda x:x*10。
  • 调用(12):给乘法函数传12,计算得12*10=120。

整个调用链推导完成,最终结果为120。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:25:19