zoukankan      html  css  js  c++  java
  • 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

    一个详细的说明 

  • 相关阅读:
    软工人日常
    11.5
    11.4
    11.3
    11.2阅读笔记
    11.1阅读笔记
    10.31 异常
    10.30动手动脑
    10.29
    10.28
  • 原文地址:https://www.cnblogs.com/ch459742906/p/7698028.html
Copyright © 2011-2022 走看看