波大大12138 发表于 2020-6-5 09:21:29

关于闭包的问题

def funX():
    x = 5
    def funY():
      nonlocal x
      x += 1
      return x
    return funY

a = funX()
print(a())
print(a())
print(a())
为什么从第二次开始打印x就从6开始计算了而不是5呢,不是重新调用的话应该重新初始化吗?能说的详细一点吗?

魏睿超 发表于 2020-6-5 09:25:41

啥。。。。

Twilight6 发表于 2020-6-5 09:29:14

第一次你调用函数 funX 将函数funx 的结果 return funY 返回给了 a 则 a = funX() 即是 a = funY

而你直接调用 a() 就是 直接调用 funY() ,而返回 x 的值前面 x += 1 了 所以才会返回6
页: [1]
查看完整版本: 关于闭包的问题