Python高阶函数,UnboundLocalError:赋值前引用的变量

时间:2017-05-12 08:32:25

标签: python

我在练习高阶函数时遇到了问题。 “重复”和“重复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

0 个答案:

没有答案