【面试出题】基础-装饰器
实现一个装饰器,统计函数执行的时间和被调用的次数
1 # !/usr/bin/env python 2 # coding:utf-8 3 import time 4 from functools import wraps 5 6 # 第一种 函数装饰器 7 def timeCounter(func): 8 num = 0 9 @wraps(func) 10 def wrapper(*args, **kwargs): 11 nonlocal num 12 startTime = time.time() 13 func(*args, **kwargs) 14 num += 1 15 endTime = time.time() 16 return (num,round(endTime-startTime, 2)) 17 return wrapper 18 19 @timeCounter 20 def add(a, b): 21 time.sleep(2.115) 22 return a+b 23 24 print(add(1,2)) 25 print(add(1,3)) 26 27 # 第二种 类装饰器 28 class TimeCounter: 29 def __init__(self, func): 30 self.func = func 31 self.count = 0 32 33 def __call__(self, *args, **kwargs): 34 start_time = time.time() 35 self.func(*args, **kwargs) 36 end_time = time.time() 37 self.count += 1 38 return (self.count, round(end_time - start_time, 2)) 39 @TimeCounter 40 def add(a, b): 41 time.sleep(2.115) 42 return a+b 43 print(add(1, 3))
作者:gtea
博客地址:https://www.cnblogs.com/gtea
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南