范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

python装饰器使用

  装饰器是从英文decorator翻译过来的,从字面上来看就是对某个东西进行修饰,增强被修饰物的功能,下面我们对装饰器做下简单介绍。
  一、怎么编写装饰器
  装饰器的实现很简单,本质是一个可调用对象,可以是函数、方法、对象等,它既可以装饰函数也可以装饰类和方法,为了简单说明问题,我们实现一个函数装饰器,如下代码:# 定义一个装饰器 def decorator(f):     def wrap(*pos, **kwarg):         print("enter function", f.__name__)         ret = f(*pos, **kwarg)          print("leave function", f.__name__)         return ret;     return wrap  # 使用上面定义的装饰器 @decorator def sum(a, b):     print("a + b =", a + b)  # 输出: # enter function sum # a + b = 3 # leave function sum sum(1,2)
  有了这个装饰器,我们就可以打印出什么时候开始和结束调用函数,对于排查函数的调用链非常方便。
  二、带参数的装饰器
  上面的例子无论什么时候调用sum都会输出信息,如果我们需要按需输出信息怎么实现呢,这时就要用到带参数的装饰器了,如下代码:def decorator(debug=0):     def wrap1(f):         def wrap2(*pos, **kwarg):             if debug:                 print("enter function", f.__name__)             ret = f(*pos, **kwarg)              if debug:                 print("leave function", f.__name__)             return ret;         return wrap2;     return wrap1  @decorator() def sum(a, b):     print("a + b =", a + b)  @decorator(debug=1) def multi(a, b):     print("a * b =", a * b)  # 输出: # a + b = 3 sum(1,2)  # 输出: # enter function multi # a * b = 2 # leave function multi multi(1,2)
  对sum使用装饰器时没有参数,这时debug为0,所以调用sum时不会输出函数调用相关信息。
  对multi使用装饰器时有参数,这时debug为1,所以调用multi时会输出函数调用相关信息。
  三、函数名字问题
  当我们打印被装饰后的函数名字时,不知道大家有没发现输出的不是函数本身的名字,如下代码会输出‘wrap’而不是‘sum’:# 定义一个装饰器 def decorator(f):     def wrap(*pos, **kwarg):         return f(*pos, **kwarg)      return wrap  # 使用上面定义的装饰器 @decorator def sum(a, b):     print("a + b =", a + b)  # 输出: # wrap  print(sum.__name__)
  有时这种表现并不是我们想要的,我们希望被装饰后的函数名字还是函数本身,那要怎么实现呢?很简单,只需要引入functools.wraps即可,如下代码就会输出‘sum’了:from functools import wraps # 定义一个装饰器 def decorator(f):     # 使装饰后的函数保留原有名字     @wraps(f)     def wrap(*pos, **kwarg):         return f(*pos, **kwarg)      return wrap  # 使用上面定义的装饰器 @decorator def sum(a, b):     print("a + b =", a + b)  # 输出: # sum  print(sum.__name__)
  看完后是不是觉得python装饰器很简单,只要了解它的本质,怎么写都行,有好多种玩法呢。

新型全固态电池有望用于电网存储和电动汽车在追求新一代电池技术的过程中,有两种非常有前途的途径,即使用固态电解质而不是液态电解质,以及在阳极组件中添加硅以提高能量密度。一个新开发的架构将这两项创新放在了一个设备中,形成一个90秒充满电!新型锂碳(LiC)电池实现了突破性的电池技术近日,德国马勒(Mahle)动力总成公司和阿特罗普能源公司(AllotropeEnergy)共同公布了一项新的电池技术,该技术可以提供超高速充电和良好的功率密度。通过结合超级电容器2021世界人工智能大会上演顶级思想盛宴让AI更好造福人民7月8日10日,以智联世界众智成城为主题的2021世界人工智能大会在上海召开,汇聚了图灵奖得主诺贝尔奖获得者企业家政府官员专家学者投资人等,就人工智能的发展现状与未来趋势应用场景数类银河有生源说银河系这样的星系中,生命可以自然传播多远?生命能在没有技术干预的情况下,在银河系这样的星系中传播吗?这个问题基本上没有答案。但是,一项新的研究通过使用一个类似银河系的模拟星系,来试图解答这个问题。科学家们对这个模型进行了研美国宇航局为即将到来的月球车选择了一个真正的最佳着陆点这款名为VIPER的四轮月球车,将用100天的时间搜寻月球上的冰和其他资源的迹象。经过深思熟虑,美国宇航局(NASA)为即将到来的阿尔特弥斯月球车任务选择了一个有趣的地点月球南极附美国证实五架B21袭击者核轰炸机正在建造中美国空军部长弗兰克肯德尔(FrankKendall)正式证实,诺斯罗普格鲁曼公司(NorthropGrumman)正在加利福尼亚州棕榈谷的空军42号厂,建造五架B21突袭者战略重型警惕!在婴儿的粪便中发现了微塑料,含量远高于成年人一项新研究发现,即使是新生儿体内也会携带微塑料,而婴儿体内的微塑料含量似乎比成年人高得多。这项研究表明,婴儿体内的微塑料比其他任何人都要多。研究发现,1岁婴儿的粪便中的微塑料含量高天文学家看到了行星正在形成的富碳星云要想了解一颗行星的诞生,是一个具有挑战性的难题。我们知道,行星是在新恒星周围的气体和尘埃云中形成的,这些云被称为原行星盘。但要准确把握这一过程(将尘埃云和一颗完成的行星之间的点连接元气森林乳茶事件,有了法律层面的定论在这个以瘦为美的时代,有糖高热量是很多人看成一种原罪,作为近年迅速走红的饮料品牌,元气森林乳茶凭借0蔗糖火了,不过近期元气森林乳茶事件闹得是沸沸扬扬,站在了风口浪尖,有人甚至称有欺魅族企业定制化服务到来,带你看看什么才叫真定制在说正事之前笔者我想先问大家一个问题,不知道屏幕前的大家有没有发现,现在我们日常的工作生活,基本都已经离不开手机这样一个电子产品了。像原先,手机还只是一个寻常的通话工具而已。但到了HarmonyOS2发布后12款硬件鸿蒙生态设备紧随亮相6月2日举办的HarmonyOS2及华为全场景新品发布会点燃了大众期待,全新发布的HarmonyOS2将各个设备在系统层面融为一体,形成超级终端,实现了设备之间的硬件互助与资源共享
使用hydra对端口进行爆破2022年,网站的防护(sql,xss)的安全保护也已经上升了一个等级,但是由于管理员的安全意识薄弱,网站弱口令漏洞依然猖獗,不信可以看补天的漏洞提交记录,弱口令依然是漏洞中的佼佼盘点CES2022有亮点的智能穿戴设备CES2022已经过去了,因为疫情的影响,现在的CES再也不是以前哪种轰轰烈烈的大场面,但我们仍然能看到一些有趣的穿戴设备发布,其中即有去年热门产品的升级款,也有全新产品的发布,我计算机程序设计语言分为四类计算机程序设计语言分为四类为了让计算机解决实际问题,人们从一开始就不断地开展程序设计工作,这里的程序就是计算机能够执行的指令代码(机器码和其它代码)。程序设计人员还必须在一个被称为欧研发收集海底垃圾的机器人系统近日,一个欧洲科研团队开发了一种可在水下收集垃圾的机器人系统,并成功进行了原型机的首次测试。该机器人系统由4个自主机器人组成,能通过深度学习算法和声学传感器将垃圾与海洋动植物区分开2022年适用于全新MacBook的最佳macOS应用程序在世界上所有伟大的感情中,有一个人是最重要的。没错,我说的是买一台新的苹果电脑。除了它显然是一个闪亮的新事物之外,真正让我着迷的是从一张白纸开始的想法。在这个阶段,你的旧机器可能装现在滴滴好干吗?过了年准备跑滴滴,大家给点意见?特别好干,单子特别多,早高峰能接三四单,过了早高峰短短一小时就能接到一单,特别好,很轻松,一天流水高达一两百越来越好跑了,尤其是没有双证的非法营运黑网约车更好跑,月入两三万不是梦!空调一直开着和一开一关,哪个更省电?听听家电师傅怎么说空调一直开着和一开一关,哪个更省电?听听家电师傅怎么说编辑美家指南作为大家电之一,空调的使用周期虽然只在每年的冬夏季节,但是它集中使用频率很高。而且直接影响着我们的居住舒适感。所以过年送长辈该买什么手机?大电池大屏幕大音量,长辈用了都说好过年了,在外漂泊的游子也要归家了。忙碌了一年,也是时候回家看看了。在外打拼,最放心不下的和最为你担忧的,只有家里的老人。这时候没有什么比见他们更重要的事情了,但我们漂泊在外难免不能我眼中的OPPOFindX2Pro我的手机虽然一直换个不停,但是一直当二把手的FindX2Pro在这大半年以来就一直没换过。作为沈义人操刀的在OPPO顶级旗舰系列中的绝唱,X2P从一开始似乎就已经坐稳了叫好不叫座的最疯狂的骁龙8Gen1旗舰来袭22GB内存640GB存储双风扇散热虽然高通发布骁龙8Gen1已经是去年底的事了,但目前市场上搭载该芯片的新机数量还不多,同时也面临了一个严重的问题,那就是配置同质化。大多数骁龙8Gen1新机相比去年的骁龙888手机为什么高价低配的OPPO和vivo手机还有那么多人买?这都2022年了,如果还有人说OPPO和vivo高价低配,那我只能说生活的圈子太闭塞了,或者说看问题太片面了。首先任何品牌都有溢价,OV的溢价绝对不是最离谱的就说国内,主流的手机品