闭包:在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包
作用:解决了全局变量被修改
想在闭包中去修改外部函数的变量使用nonlocal关键字
闭包的优点:
-
无需定义全局变量即可实现通过函数,持续的访问,修改某个值
-
闭包使用的变量的所用于在函数内,难以被错误的调用修改
缺点:
-
由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放,一直占用内存
装饰器其实也是一种闭包,其功能就是在不破坏目标函数原有的代码和功能的前提下,为目标函数增加新功能