四四四四四秒 发表于 2021-3-24 22:34:54

请问该如何解释闭包以及下面的例子?

如果是这种情况的话,会打印678,但如果把print(a())改成print(funX()())的话,就会打印666,请问大佬们这应该怎么解释?
        def funX():
          x = 5
          def funY():
                nonlocal x
                x += 1
                return x
          return funY
       
        a = funX()
        print(a())
        print(a())
        print(a())

kogawananari 发表于 2021-3-25 01:03:42

没有引用计数,funX().__closure__的内存被回收了

a = funX()a.__closure__留存了下来

四四四四四秒 发表于 2021-3-25 10:16:24

kogawananari 发表于 2021-3-25 01:03
没有引用计数,funX().__closure__的内存被回收了

a = funX()a.__closure__留存了下来

感谢解答!
页: [1]
查看完整版本: 请问该如何解释闭包以及下面的例子?