让我们考虑一下以下代码:
def f(x):
return x
sol = [f]
sol.append(lambda x: sol[0](x) + x)
sol.append(lambda x: sol[1](x) + x)
print(sol[0](1), sol[1](1), sol[2](1))
# 1 2 3
这样做,我得到了我想要的东西.现在,让我们做完全相同的事情,但有for loop
:
def f(x):
return x
sol = [f]
for i in range(1, 3):
sol.append(lambda x: sol[i](x) + x)
print(sol[0](1), sol[1](1), sol[2](1))
# RecursionError: maximum recursion depth exceeded.
有人能给我解释一下发生了什么事吗?
乍一看,我认为这个问题与one类似:Lambda函数反复调用自己,直到它在递归限制处触底.但我看不出为什么会是这样.