柠檬冲冲冲 发表于 2021-8-11 16:40:30

没看懂这里

def funx():
    x = 5
    def funy():
      nonlocal x
      x += 1
      return x
    return funy
a = funx()
print(a())
print(a())
print(a())

这里为什么会返回6,7,8
为什么不是6,6,6
看了解析还没懂
求助

wp231957 发表于 2021-8-11 16:43:09

nonlocal x 的作用
他的作用 就相当于每次调用x+=1都修改了 x 初始值

柠檬冲冲冲 发表于 2021-8-11 16:55:51

所以说第一次print的时候返回6之后,第二行的x就变为6,然后最后返回7对吗

大马强 发表于 2021-8-11 17:36:52

柠檬冲冲冲 发表于 2021-8-11 16:55
所以说第一次print的时候返回6之后,第二行的x就变为6,然后最后返回7对吗

是的,如果没有 nonlocal 那么内函数不能修改外部函数的值
页: [1]
查看完整版本: 没看懂这里