Python for循环中的闭包,求详解
def count():fs = []
for i in range(1,4):
def f():
return i*i
fs.append(f) #明明加入的是同一个函数名f,为什么列表中加入的是三个不同地址,地址不同自然函数就不是一个了
return fs
#下面是调用函数
f1, f2, f3 = count()
print(f1())
print(f2())
print(f3())
你这个没有闭包 因为for语句没有自己的命名空间 i的状态没有被保存
地址一不一样是看python解释器优化代码 一般 值类型的值一样会被优化为共用一个地址 引用类型的不会{:10_292:} 没听明白
huyanmin 发表于 2021-3-30 10:26
没听明白
你回复的不是我我没看到。现在你悟了吗{:10_253:} 还是不明白
页:
[1]