标签:int def 接收 定义函数 att attr 需要 示例 类型
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,或者去测码学院官网查看
标签:int def 接收 定义函数 att attr 需要 示例 类型
原文地址:https://www.cnblogs.com/cema/p/13166566.html