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

Python考试Lambda表达式求值问题:输出为何为6?

复杂Lambda表达式求值推导

我们直接拆解题目中的代码:(lambda x:x((lambda x:x(lambda x:x))(x(x))))(lambda x:x)(lambda x:x+x)(3),用变量替换+分步计算的方式理清逻辑:

步骤1:给各Lambda命名(避免命名冲突)

  • 恒等函数:B = lambda x:x(第一个传入的参数)
  • 加法函数:F = lambda x:x+x(第二个传入的参数)
  • 中间Lambda:D = lambda x:x(lambda x:x)
  • 最外层Lambda:A = lambda x:x(D(x(x)))

整个表达式等价于:((A(B))(F))(3),我们从左到右逐步计算。

步骤2:计算A(B)

把x=B代入Lambda A:

  1. 先算x(x):B(B),因为B是恒等函数(输入什么返回什么),所以B(B)=B。
  2. 再算D(x(x))即D(B):把x=B代入D,得到B(lambda x:x),还是因为B是恒等函数,返回传入的lambda x:x,记这个结果为E = lambda x:x。
  3. 最后算x(D(x(x)))即B(E):B(E)=E(恒等函数特性),所以A(B)=E(也就是恒等函数)。

步骤3:计算(A(B))(F)即E(F)

E是恒等函数,所以E(F)=F(直接返回传入的加法函数)。

步骤4:计算(E(F))(3)即F(3)

F是lambda x:x+x,代入x=3,得到3+3=6。

可视化简化流程

((A(B))(F))(3)
→ ((B(D(B(B))))(F))(3)
→ ((B(D(B)))(F))(3)
→ ((B(lambda x:x))(F))(3)
→ ((lambda x:x)(F))(3)
→ (F)(3)
→ 3+3=6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:45:46