首页 > 编程语言 > 详细

Python基础之装饰器

时间:2020-06-19 22:19:59      阅读:70      评论:0      收藏:0      [点我收藏+]

测码学院

 

1、装饰器本质是一个高阶函数。接收一个函数作为参数,并且返回一个函数的高阶函数。示例:def decorator(func): def wrapper(): python 代码 func() python 代码 return wrapper

 

2、通过__name__ 属性来获取;

 

技术分享图片

 

3、通过getattr(func,‘__name__‘)来获取。

 

技术分享图片

 

4、计算sayHello()方法运行的时间。import timedef calculateTime(func): def wrapper(): starttime=time.time() func() endtime=time.time() print ‘运行的时间:‘,endtime-starttime return wrapperimport time@calculateTimedef sayHello(): time.sleep(5) print ‘hello‘sayHello()

 

技术分享图片

 

5、在这里说明下 :@calculateTime 置于方法定义之前,类似于 执行sayHello=calculateTime(sayHello) 这串代码。定义函数:import timedef sayHello(): time.sleep(5) print ‘hello‘装载函数:sayHello=calculateTime(sayHello)调用函数:sayHello()那么现在sayHello对象指向的就是calculateTime返回的wrapper函数,所以调用sayHello的时候,直接调用wrapper函数。这种调用方法和上面使用@调用方法结果一样。

 

技术分享图片

 

6、在运行Add()前后打印日志。def calculateDigit(func): def wrapper(*args,**kw): print ‘计算开始‘ func(*args,**kw) print ‘计算结束‘ return wrapper@calculateDigitdef add(*args,**kw): sum=0 for x in args: sum=sum+x print sum

 

技术分享图片

 

7、说明:*args:普通的参数**kw :关键字参数,字典类型。

 

8、如果装饰器本身需要传进参数,那么需要编写一个返回装饰器的高阶函数。def returnDecorator(text): def decorator(func): def wrapper(*args,**kv): print text func(*args,**kv) return wrapper return decorator@returnDecorator(‘hello parameter‘)def add(name): print name说明:@returnDecorator(‘hello parameter‘) 返回的是decorator装饰器。然后将add作为参数传给decorator,就和前面的过程一样。

 

技术分享图片

 

更多关于python自动化测试学习资料可加博主qq:1993712276,或者去测码学院官网查看

Python基础之装饰器

原文:https://www.cnblogs.com/cema/p/13166566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!