没看明白,求详解?
def count():
fs = []
for i in range(1, 4):
def f(j):
def g():
return j*j
return g
r = f(i)
fs.append(r)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
--------f1创建时,调用count()函数,先成成一个空列表fs,接下来进行循环,因内部函数未被调用不执行,跳至r=f(1),调用f(j)函数,因g()未被调用不执行,跳至ruturn g 返回g函数,但因g函数未被调用,不返回值,继续第2轮循环r=f(2),第3轮循环r=f(3),fs=[f(1),f(2),f(3)]
----f1()调度函数时 fs就变成了[1,4,9]
----但为什么正确的结果却为f1()=1,不明白??