打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
说说Python中闭包是什么?


公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!

小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

废话不多说,开始今天的题目:

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

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

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

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

def 外层函数(参数):
    def 内层函数():
        print("内层函数执行", 参数)

    return 内层函数

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

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


#闭包函数的实例
# 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。

文末推荐闭包的文章链接:

https://www.cnblogs.com/Lin-Yi/p/7305364.html

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

1-40、Python面试1-40题汇总

41、说说Python中的正则表达式?
42、Python如何实现斐波那契数列?
43、说说Python 中 is 和 == 的区别?
44、说说Python如何实现杨辉三角?
45、说说Python中变量的作用域?
46、Python打印九九乘法表有几种方式?
47、Python中列表常见的方法有哪些?
48、说说Python中yield的用法?
49、说说Python中元类是什么?
50、Python中几种常见的排序算法?

关注小猿公众号,每天学习一道题

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
12步轻松搞定python装饰器
浅谈Python命名空间和作用域
教小朋友学 Python -- 函数与Lambda表达式
Python装饰器的实现原理
干货分享 | 理解 Python 装饰器的简单方法
深夜好文|装饰器为什么难以理解?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服