【引言】
我们经常需要多函数进行耗时测试,测试方法有许多,这里介绍装饰者的方法,提高耗时测试代码的可复用性,在其他方面的应用也是如此。
【设计原则】
类应该对扩展开放,对修改关闭。
【代码】
(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)结果
时间: 2024-10-23 04:20:27