安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

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日从市城乡管理局了解到,今后我市新增环卫作业车将全部由新能源车上岗,现有存量燃油环卫作业车,也要全部更新为新能源车型。推广使用新能源环卫车是我……
下一部手机,你会买华为还是苹果?照明产品ERP能效认证申请流程周期价格传舜宇光学正领军开发三星GalaxyA235G机型的主摄像头为什么现在很多人不在微信朋友圈发帖而喜欢在头条上发帖?荣耀magic3,真的配得上旗舰二字吗?我们来看一看小灵通为什么会退市?如何收看4k的央视节目?现在入手iPhone11值得吗?iPhone11当主力机的半深耕科技创新,数字经济大有可为给矿山装上智慧大脑骁龙88812GB256GB65W,跌至2299元,因为开端处女座Time,100全面屏中兴Axon305G接受完美考验

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利