python-闭包

闭包:当有函数嵌套时,内部函数被保存到外部时会产生闭包。

def A():
    # print('this is A function')
    a = 0
    def B():
        # B里面的参数a是声明在B函数外的,所以要修改a的值需要先执行nonlocal a
        nonlocal a
        a += 1
        print('this is B function')
        print(str(a))
    return B

# 内部函数B被返回到外部并赋给了func,此时产生了闭包。导致A函数的作用域链没有释放
func = A()
# 因为共享同一个变量a,所以每次执行func()的时候a在上一次的基础上+1,由此可以统计出该函数被执行的次数
func()
func()
func()
func()

this is B function
1
this is B function
2
this is B function
3
this is B function
4

 

posted @ 2019-03-23 21:57  turbolxq  阅读(127)  评论(0)    收藏  举报