#Program 1
def test(fun, counts=100):
def f(*args):
sum = 0
while counts:
sum += fun(*args)
counts -= 1
return sum
return f
a = test(pow)
a(2, 2)
#Program 2
def test(fun, counts=100):
def f(*args):
sum = 0
for i in range(counts):
sum += fun(*args)
return sum
return f
a = test(pow)
a(2, 2)
Question: Why program 1 has the UnboundLocalError: local variable 'counts' referenced before assignment, but program 2 worked?