python闭包使用

def funcA():
        funcAVar=1
        def innerB():
                nonlocal funcAVar
                funcAVar+=1 #操作外部变量funcAVar
                return funcAVar
        return innerB #将函数内部定义的innerB返回

outterB=funcA() #调用funcA,返回funcA内部定义的函数innerB

由于innerB在外部有引用(outterB),所以innerB的上下文不会销毁

y=outterB()  #其实是调用innerB函数,由于outterB在外部的引用,所以innerB读取funcaAVar,此时为1,+1为2
print (y) #2
y=outterB()#再次调用innerB,由于innerB在外部仍然有引用,所以上下文还没销毁,所以读到的funcaAVar是2
print (y) #3
y=outterB() #依次类推

print (y) #4

一个详细的说明 

原文地址:https://www.cnblogs.com/ch459742906/p/7698028.html