函数装饰器
1、装饰器的实现
1.1 无参装饰器,得出一下代码运行时间,在不改变函数调用方式的情况下
import time def index(): time.sleep(2) print('hello') return 1 index() def wrapper(func): start_time = time.time() res = func() stop_time = time.time() print(f'运行了{stop_time - start_time}') return res wrapper(index) def calc_time(func): def wrapper1(): start_time = time.time() res = func() stop_time = time.time() print(f'运行了{stop_time - start_time}') return res return wrapper1 index = calc_time(index) index()
输出结果:
hello hello 运行了2.0135855674743652 hello 运行了2.0008928775787354
import time def calc_time(func): def wrapper1(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) stop_time = time.time() print(f'运行了{stop_time - start_time}') return res return wrapper1 @calc_time # index = calc_time(index) def index(): time.sleep(2) print('hello') return 1 index()
输出结果:
hello
运行了2.014746904373169
1.2 有参装饰器
def user_other(engine): def deco(func): def wrapper(*args, **kwargs): if engine == 'file:': res = func(*args, **kwargs) return res return wrapper return deco @user_other(engine='file') def index(): return True index()

浙公网安备 33010602011771号