前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >说说Python中闭包是什么?

说说Python中闭包是什么?

作者头像
用户1564362
发布2019-11-15 10:51:42
1.4K0
发布2019-11-15 10:51:42
举报
文章被收录于专栏:飞总聊IT

问:说说Python中闭包是什么?

答:可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,外函数和内函数。在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。

闭包在Python中很常见,只不过你没特别注意这就是一个闭包。比如Python中的装饰器Decorator,假如你需要写一个带参数的装饰器,那么一般都会生成闭包。

下面先用伪代码进行闭包格式的描述:

代码语言:javascript
复制
def 外层函数(参数):
    def 内层函数():
        print("内层函数执行", 参数)

    return 内层函数

内层函数的引用 = 外层函数("传入参数")
内层函数的引用()

再来个闭包最简单的例子,方便大家理解:

代码语言:javascript
复制
#闭包函数的实例
# outer是外部函数
def outer( a ):
    # inner是内函数
    def inner( b ):
        #在内函数中 用到了外函数的临时变量
        print(a+b)
    # 外函数的返回值是内函数的引用
    return inner
ret = outer(5) #ret = inner
ret(10) #15 ret 存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数

上面ret(10),运行结果是15,你看懂了吗?在这个案例中,外函数outer有接收参数 a=5,内函数inner接收参数b=10,在内函数体中计算了a+b 即 5+10的值作为返回值,外函数返回内函数的引用,这里引用指的是内函数inner在内存中的起始地址,最终调用内函数inner()得到返回值15。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞总聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档