闭包不太懂,请大神赐教
我的理解是f1,f2,f3在for循环中没有进行相乘的计算,等循环完它们的值都是3后再进行计算,
如果我的理解没问题,那么我想知道,3是怎么赋予f1,f2,f3,的,然后它们是怎么最后计算成9的,不是不进行return i*i吗?
如果理解有误恳请大神解释,希望可以通俗一点,小白听不太懂专业术语,十分感谢!
我的理解是f1,f2,f3在for循环中没有进行相乘的计算,等循环完它们的值都是3后再进行计算,
如果我的理解没问题,那么我想知道,3是怎么赋予f1,f2,f3,的,然后它们是怎么最后计算成9的,不是不进行return i*i吗?
如果理解有误恳请大神解释,希望可以通俗一点,小白听不太懂专业术语,十分感谢!
2018-11-16
fs=[]
for i in range(1,4):
def f():
return i*i
fs.append(f)
return fs
f1,f2,f3=count()
print f1(),f2(),f3()
注意到 fs.append(f)中传入的为一个函数f,即在list中对应着三个函数地址(试试print f1,f2,f3 会显示为三个地址),调用f1,f2,f3 时则都对应着调用f函数,此时for循环已经结束,最终赋值为3,即return 3*3。
尝试改写函数: fs.append(f()),此时传入list为三个值1,4,9.即[1,4,9],当执行f1,f2,f3=count()语句时,为依次取出list表中的值,即1,4,9
举报