leonrampage 发表于 2019-1-29 14:02:09

Python闭包问题

6. 以下是“闭包”的一个例子,请你目测下会打印什么内容?
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 啊

BngThea 发表于 2019-1-29 14:10:48

简单这样理解:
内部函数被保留

塔利班 发表于 2019-1-29 14:25:25

a=funX()
a是函数funX的运行结果,即funY,闭包只有a再加括号,然而a()并不是运行funX,而是执行funY的内容,因此x没有重置为5,每次运行+1
页: [1]
查看完整版本: Python闭包问题