【发布时间】:2016-01-29 10:57:45
【问题描述】:
我知道 Python 应该具有一流的函数,并且我已经编写了一些 Python 来“确认”这一点,但是以下内容会在 3.5 中爆炸(耗尽堆栈深度)我的 IDLE:
k = lambda x:x+1
k = lambda x:k (x+1)
k(0)
它不应该评估为 2 吗?
k = lambda x:x+1
j = lambda x:k (x+1)
j(0)
确实如此。
【问题讨论】:
-
您是说它在 IDLE 中触发了无限递归(我可以相信),还是应该正确评估为无限循环(这不是我所期望的)?如果是后者,我希望第二行中的 RHS k 评估回第一行中的 lambda,将
k更新为lambda x: (x+1)+1。 (我很高兴得知 CS 的其他成员不会期望这种情况。) -
lambda 是“后期绑定”。在调用 lambda 之前不会检查 k 的值
标签: python-3.x lambda