函数装饰器与类装饰器

import time

# 函数装饰器
def runtime(fun1):
    def inner(*args, **kwargs):
        """inner doc """
        start_time = time.time()
        f = fun1(*args, **kwargs)
        time.sleep(1)
        end_time = time.time()
        interval = end_time - start_time
        print("function %s 运行时间:%s " % (fun1.__name__, interval))
     return f
return inner @runtime def fun_a(a): """fun_a : hello + a""" print("hello"+a) # print(fun_a.__name__) # print(fun_a.__doc__) fun_a('a') #类装饰器 class Runtime(object): def __init__(self, delay=1): self.delay = delay def __call__(self, fun): """Runtime doc""" def inner(*args, **kwargs): """inner doc""" start_time = time.time() f = fun(*args,**kwargs) time.sleep(self.delay-1) end_time = time.time() interval = end_time - start_time print("function %s 运行时间:%.4f " % (fun.__name__, interval)) return f return inner @Runtime(2) def fun_a(a): """fun_a : hello + a""" print("hello"+a) print(fun_a.__name__) print(fun_a.__doc__) fun_a('a')