专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

如何理解使用Python的装饰器

  首先Python的装饰器值是一种语法糖,用于动态修改函数或类的行为
  大白话就是Python的装饰器只是Python语法指令的简单写法,他是用来修饰类和函数实现一些辅助功能,不使用装饰器也可以,可能实现起来比较麻烦(优雅是Python追求的特点之一)!
  Python装饰器的基本原理:一个函数可以接受另一个函数作为参数,然后返回一个新的函数一个引例deflog(func):defwrapper(args,kw):print(calls():func。name)returnfunc(args,kw)returnwrapperlogdefmyfunc(args,kw):print(helloworld)
  在这个例子中定义了一个装饰器log,它接受一个函数作为参数,然后返回一个新的函数wrapper。wrapper函数中输出了一段日志,并调用原来的函数func。
  我们用log语法将装饰器应用到了myfunc函数上,相当于执行了如下语句:myfunclog(myfunc)
  这样,再用myfunc()函数时,log函数把myfunc()函数的参数打包给了wrapper()函数,wrapper()函数在执行之前会对myfunc()函数进行一些装饰!然后再执行myfunc()函数。
  那么问题来了?为什么会执行wrapper()函数呢,我们仅仅是定义了它,并没有调用,看到log函数结束时的返回语句:returnwrapper就是对wrapper的调用,那这样顺序就里清楚了
  当然你也可以选择不用装饰器,实现相同的效果,那样程序就得改成这样:deflog(func,args,kw):print(calls():func。name)returnfunc(args,kw)defmyfunc(args,kw):print(helloworld)log(myfunc)
  这样你每次运行myfunc函数的时候外面就得套个log函数,而且当myfunc函数有参数时,你还得把参数传递给log,就显得调用起来十分麻烦!装饰器的精髓就是装饰器函数把它需要修饰函数的参数一同打包传递给了内部定义的函数,并且执行内部定义的函数装饰器的其它应用计时装饰器:记录函数执行时间。缓存装饰器:将函数的返回值缓存起来,避免重复计算。权限验证装饰器:检查用户是否有访问某个页面的权限。日志记录装饰器:记录函数的执行结果或异常信息
  一个计时装饰器的例子importtimedeftimer(func):defwrapper(args,kwargs):starttimetime。time()resultfunc(args,kwargs)endtimetime。time()print(f函数{func。name}执行时间:{endtimestarttime})returnresultreturnwrappertimerdefmyfunc(n):time。sleep(n)myfunc(2)输出:函数myfunc执行时间:2。0025088787078857
  这个不必多说,和上面log()装饰是一个道理,你可以尝试不用装饰器实现上面的功能!
  在这个例子中,定义了一个计时装饰器timer,它会在函数执行前记录开始时间,执行后记录结束时间,并输出函数执行时间。然后,我们用timer将它应用到了myfunc函数上,这样每次执行myfunc(n)函数时,都会输出函数执行时间Python中一些特定的装饰器
  1、property:用于将一个方法转化为只读属性。可以让我们在不改变原有代码的情况下,对类的外部接口进行改进classMyClass:definit(self,x):self。xxpropertydefx(self):returnself。xcMyClass(10)print(c。x)输出:10
  在这个例子中,定义了一个类MyClass,其中包含一个私有属性x,和一个方法x,并用property装饰器将方法转化为只读属性。这样,在外部访问c。x时,实际上是调用了c。x()方法
  2、staticmethod:用于将一个方法转化为静态方法。静态方法可以直接通过类名调用,不需要实例化对象classMyClass:staticmethoddeff(x,y):returnxyprint(MyClass。f(10,20))输出:30
  在这个例子中,我们定义了一个类MyClass,其中包含一个静态方法f,并用staticmethod装饰器将其转化为静态方法。这样,在外部调用MyClass。f时,不需要实例化MyClass对象。
  3、classmethod:用于将一个方法转化为类方法。类方法的第一个参数是类对象,可以通过它访问类的属性和方法。classMyClass:x10classmethoddeff(cls):returncls。xprint(MyClass。f())输出:10
  在这个例子中,我们定义了一个类MyClass,其中包含一个类属性x,和一个类方法f,并用classmethod装饰器将其转化为类方法。这样,在类方法中可以通过第一个参数cls访问类属性x
  4、functools。wraps:用于修饰装饰器。如果我们定义一个装饰器,它会修改被装饰函数的行为,但是在外部调用被装饰函数时,函数的名称和文档字符串会发生改变。为了保留原有的名称和文档字符串,可以使用functools。wraps装饰器。importfunctoolsdefmydecorator(func):functools。wraps(func)defwrapper(args,kwargs):print(Callingdecoratedfunction)returnfunc(args,kwargs)returnwrappermydecoratordefexample():Docstringprint(Calledexamplefunction)print(example。name)输出:exampleprint(example。doc)输出:Docstring
  如果对Python编程感兴趣,可以私聊小编!
  编程Python

逃离不幸的原生家庭后,婚姻又出现裂痕,她能否再次逆风翻盘读者旗舰店读者2022高考作文辅导读者增刊高考语文提分写作范文优秀作文素材202225购买近日,以小妇人为原型改编的韩剧小小姐们热播。讲述了家境贫穷的三姐妹,被卷入了700亿韩元相1962年杜聿明参加国庆,看见一中将脸色大变16年前你不是死了吗1962年10月,杜聿明应邀到天安门出席国庆大典。期间,一名身穿军装的将军走到他面前说到杜先生,您好,我可是你的老熟人了,您还记得我吗?杜聿明上下打量眼前的人摇了摇头,然后谦虚地问关东军2万人进军苏联,朱可夫下两道命令,大败日军1939年,距离海拉尔两百公里处的中蒙边境,有一个地方叫诺门坎,也就是现在的内蒙古呼伦贝尔市西南部,新巴尔虎左旗诺门罕布日德地区,日本侵华部队和苏蒙联军在这里打了一场不见经传却对二你了解男宠的真实生活吗?在古代青楼,一生经历充满坎坷在我国经历过悠久中国封建社会,尤其是中国古代,重男轻女,男性地位非常高,在那时的观点里女性务必借助男性才能存活下去。无论在话本还是现实,男人往往会有老婆和很多小妾,甚至有人为了生计美国和英国因为什么分裂,他们不是一个国家吗?在历史上,英国曾号称日不落帝国,辖下的领土面积最高时,多达三千多万平方公里,占到世界陆地面积的14。连今天的世界超级大国美国,都曾经是它的殖民地。不过,靠着英国建立的殖民地北美十三明朝袁隆平,从菲律宾偷回一根藤,直接养活中国3亿多人历史上大有作为的人不计其数,翻阅史书,书写着伟大功绩的人物,不只是那些坐拥高位的人,哪怕这些人具有天然的优势数不尽的金银钱财,人人听命的权势,虽说这些都是在为官道路上的助力推手,但中国哪些省的版图千年不变?符合山川形便的省较为稳定在元朝之前,中国的行政区划原则就是依照山川形便,让地方拥有相对完整的地理单元,有利于经济的发展和文化的交流。到了元朝,为了以北制南,山川形便被打破,全国行省犬牙交错。到了明清时期,比亚迪汉亮相巴黎车展,换字母车标,续航610km,约合人民币50万前不久,比亚迪召开了新能源乘用车欧洲线上发布会,宣布进入欧洲市场。在近日开幕的巴黎车展上,比亚迪三款车型亮相,这其中就包括了比亚迪汉,根据此前比亚迪在欧洲市场发布会上公布的信息,汉苹果开始预热双11降价后的iPhone13值得入手吗?随着10月下旬的到来,各大电商平台陆续推出了有关双11大促的预热活动,而在众多参与双11预热活动的商家当中,苹果受到了许多消费者的关注。目前,苹果京东自营店已经推出相关的预热活动,ampampquotWeb3。0ampampquot是什么?一文说透Web3。0前言这两天,周星驰招聘Web3。0技术人才的消息在技术圈火爆了起来。星爷也开始关注技术了?Web3。0到底是什么?Web3。0对于普通人来说,又会有什么机会呢?诸如此类的问题在网上纯电续航150km三挡DHT变速箱,领克09EMP还升级了啥?车评观察车评社前言前有理想ONE销量反超汉兰达,后有比亚迪强势屠榜,在油价不稳定,全新使用体验需求的刺激下,无论入门的紧凑级,还是偏高端的中大型,新能源动力系统都是绕不过的,尤其是
宋美龄至死不愿再见宋庆龄,二人却留下相同的遗愿,内容令人心酸读此文前,麻烦您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持。1944年7月9日,宋氏家族大姐宋蔼龄,协同小妹宋美龄前往巴西治病,宋庆龄来到机场相送邱少云身份被质疑,2016年贵州老农捐出邱少云照片,惊动中央军委战斗英雄邱少云的真实性一直被人质疑,有的人认为邱少云是虚构人物。第一我们接触到的课本和所有资料中,一张邱少云的照片都没有,都是以画像的形式存在第二被火烧成那样还一动不动,这违背了人为什么说毛泽东把握火候的能力无人能及?为什么说毛泽东把握火候的能力无人能及?毛泽东1938年10月,抗日战争正如毛泽东所预判的那样,进入了第二个阶段战略相持阶段,其标志性事件是日军攻占了广州和武汉,表面上看日本侵略者似红军长征在永州的故事(19)红星闪闪亮国民党零陵县第六区区长蒋联友,塌鼻子小眼睛,走起路来像螃蟹一样,要好难看就有好难看。他家里有钱有势通过关系,花钱买了个六区区长过足了官瘾。蒋联友没有文化,胆子也小,天天背着一把盒子59年,左大玢指出毛主席念错自己玢字,主席回去问问你爸爸1959年,湖南湘剧新花的左大玢,突然受到上级通知要去湖南省委交际处演出。就是在这里,左大玢与毛主席之间发生了一件趣事。毛主席笑着问左大玢小姑娘,你为什么姓左呢?左大玢一本正经地回林彪和粟裕在军事上谁更厉害?毛主席是如何评价两人的?如果您喜欢这篇作品,欢迎点击右上方关注。感谢您的鼓励与支持,希望能给您带来舒适的阅读体验。林彪和粟裕可谓是中国革命之路不可或缺的两员大将,一个是排名第三的开国元帅,一个则是开国十大霍金的6个预言其中3个已经上演,为何警告人类别惹外星人?霍金曾做出过6个预言,其中有3个已经灵验。2018年3月14日,这位物理巨人猝然长逝,全世界在缅怀他的同时,也陷入了对未来未知的恐惧之中。剩下的预言是否会一一灵验,历史的长河会将人像辛追夫人这类古尸,照片很恐怖为何很多报道都说栩栩如生?1972年对于历史长河来说,就是非常普通的一年,可是在这一年的中国长沙发生了一起震惊世界的考古事件一只工程队开挖防空洞,随后发现了一座恢弘无比的古墓。长沙发现古墓的消息不胫而走,最为什么皇帝那么爱杀功臣呢飞鸟尽良弓藏,狡兔死走狗烹,汉初三杰之一的韩信,明朝的徐达等,清朝的年羹尧这些都是被皇帝所杀,且都是大功臣,那么皇帝为什么要杀他们呢?先看看那些没有被杀的大功臣。张良,辞官称要退隐俄欧乱局,美俄欧,孰为螳螂孰为黄雀?一个敢于把莫斯科送给拿破仑,然后消灭之的民族应不缺大智大勇。能在短短几百年里实现大一统,先后摆脱蒙古帝国,击败强盛一时的立陶宛公国瑞典王国法兰西帝国(拿破仑)的俄罗斯从不缺谋略,也多名选手透露Apex英雄国服年底上线?或是腾讯特供版自PUBG大火之后,同类型游戏也逐渐多了起来,像Apex英雄就成为了后起之秀,目前在Steam端的人气仅次于V社当家的Dota2和CSGO。不过Apex英雄是国外大热的网游,网络延
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网