函数装饰器
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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!