城市直播房产教育博客汽车
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

Python基础之闭包

2月2日 溷元楼投稿
  一。闭包的定义:
  在一个函数的内部,再定义一个函数(内部函数)。这个内部函数引用了外部函数的变量,并且外部函数返回这个内部函数,我们把这个使用外部函数变量的内部函数称为闭包。
  简而言之,闭包就是能够读取外部函数内的变量的函数。
  例如:deff1():f1外部函数n999n:外部函数的变量deff2():内部函数print(n)f2中引用f1的变量returnf2外部函数f1返回内部函数f2,函数f2即是闭包调用法一f1()()调用法二resultf1()result()
  形成闭包的两个条件:函数的返回值必须是被包函数对象(函数名)闭包中必须引用了外层函数作用域内的变量或者形参
  二。闭包的用途
  可以读取函数内部的变量
  将一些变量的值始终保存到内存中
  1。读取函数内部的变量
  在一般情况下,在函数外部我们是不能访问到函数内部的变量的。但是,有时想要在函数外部能够访问到函数内部的变量,那么就可以使用闭包。
  例如:deff1():a100print(a)NameError:nameaisnotdefined
  上面的代码可以看出,print(a)会抛异常NameError:nameaisnotdefined。在函数f1的外面无法访问它的变量的。
  在函数f1里面定义一个闭包函数就可以访问到了
  例如:deff1():a100deff2():returnareturnf2resultf1()aresult()print(a)
  2。将一些变量的值始终保存到内存中deff1(n1):外部函数deff2(n2):内部函数resultn1n2内部函数引用了外部函数的变量n1print(计算结果:,result)returnf2ff1(1)创建闭包实例执行闭包f(2)f(3)
  运行结果:计算结果:3计算结果:4
  通过上面的输出结果可以看出闭包保存了外部函数内的变量n1的值1,每次执行闭包都是在n11基础上进行计算的。
  三。闭包的缺点
  1。由于闭包会使得函数中的变量都被保存在内存中,会增加内存消耗,所以不能滥用闭包,否则会造成程序的性能问题,可能导致内存泄露
  2。闭包无法改变外部函数局部变量指向的内存地址
  3。返回闭包时,返回函数不要引用任何循环变量,或者后续会发生变化的变量
  四。判断一个函数是否是闭包
  判断一个函数是不是闭包,可以查看它的closure属性。如果该函数是闭包,查看该属性将会返回一个cell对象组成的tuple。如果我们分别对每个cell对象查看其cellcontents属性,返回的内容就是闭包引用的自由变量的值。defouter(args):a10b15c25definner():returnabargsreturninneroutouter(4)闭包实例print(out。closure)
  运行结果:(cellat0x000002657A7AEFD0:intobjectat0x0000026576BB6A50,cellat0x000002657A7AEFA0:intobjectat0x0000026576BB6990,cellat0x000002657A7AEEE0:intobjectat0x0000026576BB6AF0)
  闭包的closure方法,可以展示出闭包储存了外部函数的两个变量,cell的内存地址是什么,在cell里面储存的对象类型是int,这个int储存的内存地址是什么。
  闭包的closure方法,可以查看每个cell对象的内容defouter(args):a10b15c25definner():returnabargsreturninneroutouter(4)闭包实例print(out。closure)foriinout。closure:print(i。cellcontents)
  运行结果:10415
  cellcontents解释了局部变量在脱离函数后仍然可以在函数之外被访问的原因,因为变量被存储在cellcontents中了。
搜索 投诉 评论 转载

神州控股子公司中标联通华盛大单同时服务国内三大运营商本报记者吕东日前,神州数码控股有限公司(简称:神州控股)全资子公司科捷中标联通华盛通信有限公司2022年至2025年物流服务项目。据了解,联通华盛为中国联通集团的全……为什么感觉人类的电池技术停滞不前了呢?我是科技数码随时答,很高兴能回答这个问题人类电池技术为什么停滞不前最明显的例子,就是手机电池了,现在人最担心的就是手机没电了。谈到停滞不前,十年前手机里的锂电池和现在的锂……美团又出新规不注册个体户,禁止送外卖,骑手五险成笑话?精明的王兴,上有政策下有对策,骑手变个体户,只为甩开社保?都说福建商人很精明,看到美团的新规后,终于明白,福建商人王兴实在是太精明了。最近有媒体爆料,美团又出新规,……科大讯飞发两款新品手腕上的高效智能录音笔颠覆形态【CNMO新闻】5月27日,科大讯飞在北京召开主题为高效转写字见光芒的发布会。会上,科大讯飞副总裁李传刚先生向我们介绍了近一年里科大讯飞所取得的成绩,同时还发布了两款全新的录音……苹果都造不出来的新机,被小米先实现了2017年9月,苹果推出了iPhoneX。它是苹果第一款全面屏手机,也奠定了后三年iPhone的外观基调。与此同时,苹果首次公布了AirPower。在官方的描……陈晓旭因癌症去世,年仅42岁!医生说她的2个错误,应引以为戒说起林黛玉的扮演者,不能不提陈晓旭。有一句话是这么说的,天堂有了陈晓旭,世间再无林黛玉。2007年,我们熟悉的87版《红楼梦》林黛玉的扮演者陈晓旭因乳腺癌去世,年仅42岁!她的……AppStore限免对白美丽绣曲线入侵者逃逸等,共5款在今天限免的iOS限免应用中,波老师精选了以下2款限免应用,3款限免游戏。复制logo上方名字即可前往AppStore下载。如遇恢复原价,则表示限免已结束,请谨慎下载。具……Android程序员是如何卷死其它Android开发的?作者:loonggg今天跟大家分享一个有意思的观点,不对,应该几个有意思的观点,而这些观点要始于一个有意思的问题:程序员是如何卷死其它程序员的?在知乎上有人提……面试普通人VS高手系列谈谈你对AQS的理解AQS是AbstractQueuedSynchronizer的简称,是并发编程中比较核心的组件。在很多大厂的面试中,面试官对于并发编程的考核要求相对较高,简单来说,如果你……Python基础之闭包一。闭包的定义:在一个函数的内部,再定义一个函数(内部函数)。这个内部函数引用了外部函数的变量,并且外部函数返回这个内部函数,我们把这个使用外部函数变量的内部函数称为闭包……苹果将允许员工讨论工资11月21日,据美国全国广播公司报道,经过几个月以来的内部薪酬争议后,苹果公司宣布员工有权讨论工作条件和薪酬。自2016年以来,苹果公司对外声称已经实现了员工的同工同酬,……环卫作业车将全部更新为新能源车本报讯(记者任晓明)2月27日从市城乡管理局了解到,今后我市新增环卫作业车将全部由新能源车上岗,现有存量燃油环卫作业车,也要全部更新为新能源车型。推广使用新能源环卫车是我……
小米拍照神机确认回归!和小米MIX4一同发布首发12倍光学变华为太子拿200万薪资,却辞职挖走上百员工,45岁沦为阶下囚跨境的选品方法有哪些呢?李逵武艺平平,为何排名那么高?人气高端旗舰TOP1?魅族18s系列,究竟强在何处?佳能851。4在背景虚化方面有没有70200f2。8好?天玑9000125W快充Turbo技术,真我新机确定,或3月2021年我们不需要轻薄了吗?618推荐3款舒适度极佳的手机OPPO2399元!oppok9pro官方渲染图曝光搭载联发鸿蒙系统3种升级方法,转发一下,让更多华为手机用户学会升级联发科7nm5G芯片年底问世,全年营收三年未涨了7月1日起实施!广西科技创新条例明确加大研发投入
为什么一些人认为深圳会跌出一线城市?热评聚热点网 10岁的孩子叛逆期怎么办10岁的孩子叛逆如何管教在空调上可以做什么它可不是只能跟你说说话而已翠枫山五年级作文热博聚热点网 兽医和养殖户的关系是朋友?是仇人?还是情人?还是都有2018年未婚孩子上户口思乡的作文高中看毕业照窥知命运帮助学龄前的宝宝不再磨牙小儿风疹的家庭护理无印良品是哪个国家的品牌(无印良品床上用品怎么样)深圳对驾驶机动车载货长度或宽高超过规定的扣几分

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁