【发布时间】:2021-09-04 12:26:35
【问题描述】:
在这段代码中sn-p
def D(m, x):
print(m)
return x
print((lambda x: D(1, D(2, D(4, x))))(5))
print("\n\n\n")
print(D(1, lambda x: D(2, D(4, x)))(5))
我们看到以下输出
4
2
1
5
1
4
2
5
为什么输出顺序不同?看起来当 D 的参数是 lambda 时,它会在稍后被评估,而如果它是一个函数,它会先被评估?我怎么理解这个?
【问题讨论】:
-
如果您使用
print(m, x)而不仅仅是print(m),事情应该会更明显。一般来说,通过print、调试器或类似工具查看整个图片,而不是在您不理解的情况下尝试推断,效果会更好。 -
我明白发生了什么。我想了解为什么会这样。这不是这里的问题
标签: python function lambda higher-order-functions