排行榜 统计
  • 建站日期:2016-09-18
  • 文章总数:121 篇
  • 评论总数:148 条
  • 分类总数:10 个
  • 最后更新:昨天 21:39

第3章 Python 基础 ( 闭包是个什么东西?)

本文阅读 2 分钟

关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数)。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。也就是说,内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必需访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)的值是外部函数返回时的值,但也会受到内部函数的影响。

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变量。这种粘粘糊糊的现象就是闭包。

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域

闭包在哪会用? 下节就用。

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.axiomxs.com/axiom/432.html
-- 展开阅读全文 --
第3章 Python 基础 ( 名称空间 )
« 上一篇 03-28
第3章 Python 基础 ( 函数进阶-装饰器 )
下一篇 » 03-28
成为第一个评论的人

作者信息

Title - Artist
0:00