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