掌握Python装饰器:轻松统计函数执行时间
装饰器是Python中强大而优雅的功能,允许在不修改原函数代码的情况下增强其行为。今天,我们用一个实用例子——统计函数执行时间,来展示它的魅力。
核心代码:时间统计装饰器
import time
from functools import wraps
def timer_decorator(func):
@wraps(func) # 保留原函数的元信息
def wrapper(*args, **kwargs):
start_time = time.perf_counter() # 高精度计时开始
result = func(*args, **kwargs) # 执行原函数并获取结果
end_time = time.perf_counter() # 计时结束
elapsed = end_time - start_time
print(f"函数 {func.__name__} 执行耗时: {elapsed:.4f} 秒")
return result # 返回原函数结果
return wrapper
使用装饰器
@timer_decorator
def add_numbers(a, b):
time.sleep(0.5) # 模拟耗时操作
return a + b
# 调用函数,自动计时
sum_result = add_numbers(3, 4)
print(f"计算结果: {sum_result}")
输出示例:
函数 add_numbers 执行耗时: 0.5008 秒
计算结果: 7
关键点解析:
@wraps
:保留原函数的名称和文档,避免调试混淆- `*args, kwargs`**:确保装饰器通用,适配任何函数参数
time.perf_counter()
:使用高精度计时器,结果更准确- 返回结果:内部函数需返回原函数的执行结果,保持调用逻辑不变
进阶提示:此装饰器可轻松复用于其他函数,只需添加@timer_decorator
即可获得计时能力。还可扩展功能,如将时间记录到日志文件或设置阈值报警。
装饰器将横切关注点(如日志、计时)与核心逻辑分离,大幅提升代码可维护性。立即尝试用它优化你的项目吧!