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

python函数修饰符的使用

  python函数修饰符@ 修饰符 ‘@’符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。 只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。 本质上讲,装饰符@类似于 回调函数,把其它的函数(暂且称为目的参数,后面紧接着的函数)作为自己的入参,在目的函数执行前,执行一些自己的操作, 比如:计数、打印一些提示信息等,然后返回目的函数。下面列举一个简单的例子。
  创建函数修饰符的规则:
  (1)修饰符是一个函数
  (2)修饰符取被修饰函数为参数
  (3)修饰符返回一个新函数
  (4)修饰符维护被维护函数的签名
  例子1: 被修饰函数不带参数 def log(func):     def wrapper():         print("log开始 ...")         func()         print("log结束 ...")     return wrapper      @log def test():     print("test ..")  test()
  运行结果: log开始 ... test .. log结束 ...
  例子2: 使用functools模块提供的修改函数属性的方法wraps def log(func):     def wrapper():         print("log开始 ...")         func()         print("log结束 ...")     return wrapper      @log def test1():     print("test1 ..")  def test2():     print("test2 ..")  print(test1.__name__) print(test2.__name__)
  运行结果: wrapper test2
  可见test1的函数名称变了,如果某些代码用到就会出问题,可以使用functools模块提供的修改函数属性的方法wraps from functools import wraps  def log(func):     @wraps(func)     def wrapper():         print("log开始 ...")         func()         print("log结束 ...")     return wrapper      @log def test1():     print("test1 ..")  def test2():     print("test2 ..")  print(test1.__name__) print(test2.__name__)
  运行结果: test1 test2
  例子3: 被修饰函数带参数 from functools import wraps  def log(func):     @wraps(func)     def wrapper(*args,**kwargs):         print("log开始 ...",func.__name__)         ret = func(*args,**kwargs)         print("log结束 ...")         return ret     return wrapper      @log def test1(s):     print("test1 ..", s)     return s  @log def test2(s1, s2):     print("test2 ..", s1, s2)     return s1 + s2   test1("a") test2("a","bc")
  运行结果: log开始 ... test1 test1 .. a log结束 ... log开始 ... test2 test2 .. a bc log结束 ...
  例子4: 修饰符带参数 ,需要比上面例子多一层包装 from functools import wraps  def log(arg):         def _log(func):         @wraps(func)         def wrapper(*args,**kwargs):             print("log开始 ...",func.__name__, arg)                         ret = func(*args,**kwargs)             print("log结束 ...")             return ret         return wrapper     return _log   @log("module1") def test1(s):     print("test1 ..", s)     return s  @log("module1") def test2(s1, s2):     print("test2 ..", s1, s2)     return s1 + s2   test1("a") test2("a","bc")
  运行结果: log开始 ... test1 module1 test1 .. a log结束 ... log开始 ... test2 module1 test2 .. a bc log结束 ...

体验真PcPhone的多屏协同,由华为EMUI10开启视频加载中在Mate30系列国内发布会的现场,我曾经短暂的体验过MateBook和EMUI的多屏协同功能,不同于以往的投屏只能看不能摸,也没有任何文件互传的能力,华为多屏协同最大的体验关于AirPodPro,你想知道的大概都在这花了一整个下午的时间,认真把市面上绝大多数的无线降噪耳机全都听了一遍,包括BeatsStudio3,BoseQC35II,SonyWH1000XM3还有BOH9i这样的头戴大耳,也三星全新折叠屏手机快闪店落地西安体验折叠屏新品突破创新三星全新折叠屏手机快闪店落地西安体验折叠屏新品突破创新全新三星GalaxyZFold35G与GalaxyZFlip35G在国内的发售,又掀起了一波折叠屏手机的热潮,很多消费者被这两十四届全运会圣火引领下MLBFirtstPitch棒球公益课火爆来袭十四届全运会圣火引领下MLBFirtstPitch棒球公益课火爆来袭9月15日晚,第十四届全运会的圣火在西安奥体中心点燃,一同点燃的将是这座城市的体育热潮。在十三朝古都西安,十四届科普色准中E和JNCD两者的区别和联系是什么?简单来说E和JNCD的目标是一样的,都是衡量人眼感知之中,两种颜色差距的大小。目标相同,所以它们的区别也就在名字和算法了。我们最熟知的E,其中的三角符号就是delta,在希腊字母中变绿了,跟手机的连接也更密了MateBookXPro2020测评MateBookXPro2020其实已经在海外的发布会正式亮相了,这是一个硬件上例行升级的产品,所以我们不会看到很明显的设计变化,还是这个熟悉但是依然惊艳的32四面超窄边框屏幕,以很佛系的商用本ThinkPadS22020长测ThinkPadS系列,是ThinkPad之中相对来说最不像ThinkPad的产品,它在尽可能保持了ThinkPad商用基础的前提下,拥有更时尚的外观,S22020则是它最新的产品评测加量不加价MateBook132020MateBook132020增加触摸屏让生态更加统一,把环境光传感器成功塞入寸土寸金的屏幕顶部边框,依然保持很高的屏占比,依然同价位唯一的高素质32屏幕,依然是少见的小尺寸高性能产BOE(京东方)携手创维推出全球首款主动式玻璃基MiniLED电视BOE(京东方)携手创维推出全球首款主动式玻璃基MiniLED电视BOE(京东方)与创维联合发布的MiniLED电视Q722021年9月23日,致敬真实创维电视2021秋季新品发布只看参数真不行iPhoneSE2020评测iPhoneSE2020我拿到手也快一周了,买的时候并没有想好它应该是给谁用或者送给谁,所以这段时间我完全是把它当成iPhone11ProMax的备用机来用,客观的测试也终于测完了小米公益基金会捐赠1000万元,紧急驰援山西抗击灾情小米公益基金会捐赠1000万元,紧急驰援山西抗击灾情10月10日,小米公益基金会宣布,向山西省慈善总会捐款1000万元,用于开展紧急救援工作。10月初,反常气候引发山西暴雨肆虐山西
摩托罗拉实在是良心,12G512G拉低到2499,国内用户纷纷支持如果看过现在摩托罗拉的旗舰机,你一定会有这样的感慨那就是实在是太良心了!这不是抬举,如果你真的对比过现在摩托罗拉和友商的旗舰机,确实能发现摩托罗拉旗舰性价比太高了。实际上从去年开始魅族手机为什么不用鸿蒙系统?其实不是魅族想不想用,而是能不能用,这里有几个重要的原因一个是华为只是开放了开源鸿蒙(OpenHarmony)的内核代码,跟华为手机上的鸿蒙还是有区别的,手机上的鸿蒙相当于华为用鸿马斯克我认为普京比我富有得多,真相可能永远不为人知埃隆马斯克(ElonMusk)是一位企业家,他创立或共同创立了包括PayPalSpaceX和特斯拉在内的各种创新企业,净资产超过2890亿美元(尽管数字如此之大,但它不断波动,超出wifi总是自动掉线,无法上网怎么办?只需这样设置,就能快速解决本文编辑今日头条作者维权骑士签约用户小俊技术分享独家原创制作未经授权严禁转载,发现抄袭者将进行全网维权投诉分享生活小妙招,享受科技新生活!大家好,欢迎来到今天的知识分享!我是你们的江西省国家重大新药创制科技重大专项项目近日完成验收来源中国科技网科技日报记者魏依晨近日,江西省国家重大新药创制科技重大专项项目通过国家验收。记者获悉,由江西省牵头承担的国家重大新药创制科技重大专项中药口服制剂先进制药与信息化技术融电商搞活动是为了促销,内容产品为什么要凑热闹?编辑导语我们经常会看到各大电商做各种各样的促销活动,无论是双十一的满减还是各大节日的优惠,电商类产品的促销活动层出不穷。除了电商类产品,内容类产品的活动也不断。那么内容类产品为什么外勤人员可以用企业微信定位打卡吗?员工在外出工作时,也是会携带手机的,企业微信会在出外勤时报备位置,因为企业微信不会追踪定位的员工的位置,只有在外勤打卡时才会对员工进行定位,以确保员工是在公司指派地点进行外勤工作。现金支付悄然回归?越来越多的年轻人重新使用现金这说明了什么?这些年我们在生活中也有感觉,现金使用的频率越来越低,大多数年轻人都通过第三方支付软件完成实时支付,根本不需要出门携带现金这些繁琐的流程了。这主要是因为互联网经济的发展带动了人们消费地球的南北两极为什么没有地震?头号周刊科普知识地理知识地球上几乎到处都有地震,全世界每年发生地震100万次,可记录到的地震也有1。2万次,五六级以上的大地震近百次。然而,南北两极地区至今却从未发现过地震。为什么iPhone14Pro将采用钛合金边框,减轻重量根据摩根大通早前的报告,苹果将于2022年下半年推出iPhone14系列(未命名),规格升级将大于iPhone13系列。高端iPhone14Pro的机身预计将由钛合金制成,并将由鸿AS2协议详解(二)上一篇中主要讲解了加密的理论知识,这篇来上代码。签名和验签通过信息摘要算法和非对称加密,可以实现信息的防伪造,防篡改,通过我们的私钥来签名消息,接收方就能通过我们的公钥来校验该消息