python语言中形成闭包的三个条件,缺一不可:
1)必须有一个内嵌函数(函数里定义的函数)——这对应函数之间的嵌套;例如下面在函数funx()里面又定义了一个funy()函数
2)内嵌函数必须引用一个定义在闭合范围内(外部函数里)的变量——内部函数引用外部变量,在funy()函数中使用了外部函数funx()的变量x
3)外部函数必须返回内嵌函数——必须返回那个内部函数,外部函数funx()返回内部函数funy()
根据上面的三准则创造了一个函数,其中的funy就是所谓的闭包,而funy内部所引用过的x就是所谓的闭包变量,闭包变量能够随着闭包函数的调用而实时更新。
def funx():
x=5
def funy():
nonlocal x
x+=1
return x
return funy