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