Python函数-闭包

一、嵌套函数

就是函数里套函数

变量的查找顺序是从当前层往上层找

二、闭包

即 函数定义和函数表达式位于另一个函数的函数体内(嵌套函数),而且,这些内部函数可以访问她们所在的外部函数中生命的所有局部变量、参数。

当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包;

也就是说,内部函数会在外部函数返回后被执行。

而当这个内部函数执行时,它仍然必须访问其外部函数的变量、参数以及其他内部函数。

这些局部变量、参数和函数声明(最初时)的值是外部函数返回时的值,但也会收到内部函数影响

def outer():
    name = 'alex'
    def inner():
        print("在inner里打印外层函数的变量",name)
    return inner # 注意这里只是返回inner的内存地址,并未执行
f = outer() # .inner at 0x1027621e0> 
f()  # 相当于执行的是inner()

注意 此时outer已经执行完毕,正常情况下outer里的内存都已经释放了,但此时由于闭包的存在,
我们还可以调用inner,并且inner内部还调用了上一层outer里的name变量,这种现象叫闭包
无论何处调用,优先使用自己外层包裹的作用域
posted @ 2019-08-09 16:42  桑铎是大叔  阅读(137)  评论(0)    收藏  举报