下面的图片反应了什么? 什么原因?
反应了: python的闭包函数,存在调用变量的延时性.
原因: funcInner函数, 在整个函数内最初只是被copy(复制)
4份到其他的内存空间, 因为其从未实际调用, 所有i未被传入该函数.
当其被调用时,由于其for循环已经在复制funcInner函数时运行完成,
所以运行funcInner函数时, 就相当于运行一个普通的函数, 现在, 该
函数运行到return了, 需要找到i参数, 由于它本身没有i参数, 所以, 它
现在往外找, 而外面的i参数已经退出for循环, 值变成了3, 所以现在
所有的该函数的克隆体, 找到的i都变为了3, 而return的结果是i * i,
好了, 现在都返回9了.
`
# 闭包函数延时性
def funcOuter():
funcList = []
for i in range(4):
def funcInner():
return i * i
funcList.append(funcInner)
return funcList
for func in funcOuter():
print(func())