我在练习高阶函数时遇到了问题。 “重复”和“重复2”的功能具有相同的建议。
然而,“repeated2”工作并返回8,而“重复”失败: (这让我很困惑,为什么变量'l'无法跟踪,但变量'n'似乎运作良好)
def repeated(f, l):
def h(x):
while l:
x=f(x)
l=l-1
return x
return h
def repeated2(f, n):
def h(x):
k = 0
while k < n:
x, k = f(x), k + 1
return x
return h
result2=repeated2(lambda x:x+1,5)(3)
result=repeated(lambda x:x+1,5)(3)
Traceback (most recent call last):
File "error_code.py", line 18, in <module>
result=repeated(lambda x:x+1,5)(3)
File "error_code.py", line 3, in h
while l:
UnboundLocalError: local variable 'l' referenced before assignment