首页 / PYTHON / 举例讲解python装饰器的使用
举例讲解python装饰器的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了举例讲解python装饰器的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2607字,纯文字阅读大概需要4分钟。
内容图文
![举例讲解python装饰器的使用](/upload/InfoBanner/zyjiaocheng/624/3422fe6df7a54f6787f8326fcb1efb90.jpg)
需求:领导想知道,该测试用例执行,用例的运行时间是多少,我们怎么实现该代码?
如下:想要实现下面用例的运行时间是多少,怎么做?
def creat_oder(): """这个是原代码,一条测试用例""" print("执行测试用例") time.sleep(1)
你可能会想到,记录开始时间,结束时间,然后计算差就行了呗,好,那我们来看看
#第一种方法在函数内去修改
import time def creat_oder(): start_time=time.time() #开始时间 print("执行测试用例") #假设它是需要执行的测试用例 time.sleep(1) #为了增加显示效果 end_time=time.time() #结束时间 print("用例的运行时间是:",end_time-start_time) creat_oder()
分析:这样做真的可以吗,看起来好像是没有错,但是已经修改了原来的代码结构,要是有其他同事也调用这个函数,是不是看见代码被改了,想锤你。那怎么办?
你可能会想到,那我写个重新写个函数,然后调用这个creat_oder函数不就行了吧。好,那我们继续看。
#第二种方法、把函数当作参数传递给另一个函数
import time def creat_oder(): print("执行测试用例") time.sleep(1) def show_time(func): start_time=time.time() func() end_time=time.time() print("用例的运行时间是:",end_time-start_time) show_time(creat_oder)
#分析:以上的方法逻辑没有问题,也可以实现。但是修改了函数名字.因为我们每次都需要将函数creat_oder作为一个参数传递给show_time函数 、之前的运行逻辑是直接运行creat_oder函数,但是现在不得不运行show_time(creat_oder)。 假设有10个方法调用需要creat_oder函数去统计运行时间,那是不是得修改10处地方,很麻烦怎么办?
#第三种方法,装饰器的使用(绕了这么久就是为了讲这个)
#定义装饰器 def show_time(func): #func参数 def inner(): #将需要对creat_oder增加的代码写到这里面 start_time=time.time() func() end_time=time.time() print("用例的运行时间是:", end_time - start_time) return inner #使用装饰器 @show_time #语法糖@ 等价于 creat_oder=show_time(creat_oder) def creat_oder(): print("执行测试用例") time.sleep(1) creat_oder()
分析:就是将需要增加的代码写在inner里面,然后给它定义一个装饰器名字,使用的时候在原来代码上加上@语法糖和装饰器名称,就到达了装饰目的。
看完以上代码,你应该明白了,装饰器就是对我们原有的代码进行增强,修饰的作用,就好像装修房子一样,不对房子的结构做改变,但是需要贴壁纸,置办家具让房子变得更好看更舒适。
那再补充一点,这个时候,老板又提出了要求,说需要知道这个用例的执行人是谁??怎么做?
第四种方法、带参数的函数装饰器(强化)
import time def who_body_run(name): def show_time(func): def inner(): start_time=time.time() func() end_time=time.time() print("用例的运行时间是:", end_time - start_time) print("执行者是:",name) return inner return show_time @who_body_run('tom') def creat_oder(): print("执行测试用例") time.sleep(1) creat_oder() #等价于who_body_run('tom')(creat_oder)()
分析:发现只需要在方法三中的代码外包裹一层函数,就可以实现装饰器的参数化。至此,老板有要求你也不用担心做不了了。。
内容总结
以上是互联网集市为您收集整理的举例讲解python装饰器的使用全部内容,希望文章能够帮你解决举例讲解python装饰器的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。