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变量,这种现象叫闭包
无论何处调用,优先使用自己外层包裹的作用域
浙公网安备 33010602011771号