lingedu 发表于 2020-6-5 22:53:54

关于函数的问题求解(闭包和非局部变量)

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

a = funX()
print(a())
print(a())
print(a())



提问:为啥结果不是6 6 6 ,而是6 7 8,这不是调用了三次funX()吗?每次调用X不是都会被赋值X = 5吗?

Twilight6 发表于 2020-6-5 22:56:23

本帖最后由 Twilight6 于 2020-6-5 22:59 编辑


只有第一次 a = funX() 调用了一次 funX() 函数 之后的都是在调用 funY() 函数

因为第一次调用返回的是 funY 这个函数 ,所以你每次调用一次 a() 就相当于 调用一次 funY()


lingedu 发表于 2020-6-5 23:14:18

Twilight6 发表于 2020-6-5 22:56
只有第一次 a = funX() 调用了一次 funX() 函数 之后的都是在调用 funY() 函数

因为第一次调用返回的 ...

又是你?这个明白了

Twilight6 发表于 2020-6-5 23:14:43

lingedu 发表于 2020-6-5 23:14
又是你?这个明白了

{:10_279:}
页: [1]
查看完整版本: 关于函数的问题求解(闭包和非局部变量)