这里变量j=i,i是循环变量,那么j不是也变成循环变量了吗?
def f(j):
def g():
return j*j
return g
r = f(i)
def f(j):
def g():
return j*j
return g
r = f(i)
2015-06-30
当调用count()时,开始执行循环语句,i分别变成1,2,3即fs=[f(1),f(2),f(3)],因为f1,f2,f3 = count(),因此f1=f(1),f2=f(2),f3=f(3)。然后执行f1(),f2(),f3(),即分别调用三个函数,由代码可知
def f(j):
def g():
return j*j
return g
即f1=f(1)=g,所以f1()=g(),执行g函数,返回j*j,此时j=1 所以f1()=1。类似,f2=f(2)=g,此时j为2,因此f2()=g()=4。所以f3()也可算出为9。
你要明白当调用count()时,循环体开始运行,但只是再不停给fs添加元素,f函数根本没有被调用,所以j根本没参与循环,只有i在参与循环。当f被调用时j再一一对应i的值进行计算
举报