首页 > 代码库 > 【Python装饰者】在函数测试的作用

【Python装饰者】在函数测试的作用

【引言】
我们经常需要多函数进行耗时测试,测试方法有许多,这里介绍装饰者的方法,提高耗时测试代码的可复用性,在其他方面的应用也是如此。
【设计原则】
类应该对扩展开放,对修改关闭。
【代码】
(1)定义装饰者具体方法
#encoding: UTF-8
‘‘‘
Created on 2016??12??7??
@filename: test.py
@author: YYH
‘‘‘
import time
from functools import wraps
 
class TimeRecorder:
def __init__(self, name="function"):
print(name +"()"+ " Start...")
print(name +"()"+ " Running...")
self.name = name
self.startTime = time.time()
def __del__(self):
print("{0}() Ended,Cost Time:{1} s".format(self.name, time.time() - self.startTime))
#使用装饰者测试函数运行时间,这里看起来像是“钩子”的方法,实际并不是的,借助于Python的装饰者,这个方法将发挥巨大的作用。
def fn_timer(function):
@wraps(function) #解决打印函数名的bug
def function_timer(*args, **kwargs):
tR=TimeRecorder(function.__name__) #增加变量,由使得该对象的生命器存在整个函数
result = function(*args, **kwargs)
return result
return function_timer

 

(2)定义装饰者(该方法就就具有fn_timer的“能力”)
技术分享
(3)使用装饰者
技术分享
(4)结果
技术分享

【Python装饰者】在函数测试的作用