Python闭包问题
def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() #如果说这个代码之所以返回3个9的原因是fs.append(f),添加的是一个函数名,一个地址,所以里面值都一样的话,那对于如下函数r = f(i),f(i)函数返回是一个g也是一个函数名,为什么这个时候就能够得出想要的值 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()