24.闭包现象


# 闭包现象
def outer():
n="曹娜是傻逼"
def inner():
print(n)
return inner
f=outer()
f()

1,函数嵌套
2,inner函数,没有n变量,根据作用域查找顺序,会找到outer的变量n,
3,outer函数返回值inner ,返回的是inner的内存地址。
4,一般来讲,outer()加括号调用,函数执行,返回inner内存地址,局部变量n瞬间释放。但是,在执行f()就相当于执行inner(),inner函数打印n,依然可以打印。
这种现象就是闭包。
意义 :返回的函数对象,不仅仅是一个函数,在该函数外还包裹了一层作用域,使得 函数无论在何处调用,优先使用自己外层的作用域
原文地址:https://www.cnblogs.com/xh716/p/11568000.html