huyanmin 发表于 2021-3-29 10:11:54

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())

kogawananari 发表于 2021-3-30 01:26:33

你这个没有闭包 因为for语句没有自己的命名空间 i的状态没有被保存
地址一不一样是看python解释器优化代码 一般 值类型的值一样会被优化为共用一个地址 引用类型的不会{:10_292:}

huyanmin 发表于 2021-3-30 10:26:35

没听明白

kogawananari 发表于 2021-4-2 21:12:30

huyanmin 发表于 2021-3-30 10:26
没听明白

你回复的不是我我没看到。现在你悟了吗{:10_253:}

huyanmin 发表于 2021-4-4 18:54:55

还是不明白
页: [1]
查看完整版本: Python for循环中的闭包,求详解