用Python装饰器优雅地为函数计时

简介: 用Python装饰器优雅地为函数计时

用Python装饰器优雅地为函数计时

在Python中,装饰器是一种强大的工具,它允许我们在不修改原函数代码的情况下,为其添加额外功能。今天,我们来探索如何创建一个简单的性能计时装饰器,这在优化代码时非常有用。

import time
import functools

def timer_decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start_time = time.perf_counter()
        result = func(*args, **kwargs)
        end_time = time.perf_counter()
        print(f"{func.__name__} 执行耗时: {end_time - start_time:.4f}秒")
        return result
    return wrapper

@timer_decorator
def example_function(n):
    """模拟一个耗时操作"""
    sum = 0
    for i in range(n):
        sum += i
    return sum

# 使用装饰后的函数
result = example_function(1000000)

这个装饰器的工作原理很简单:它记录了函数开始和结束的时间,计算并打印出执行耗时。@functools.wraps(func)确保了原始函数的元信息(如函数名、文档字符串)得以保留。

装饰器的优势在于它的可重用性——只需一行@timer_decorator,我们就可以为任何函数添加计时功能,而无需修改其内部逻辑。这种“横切关注点”的分离让代码更加清晰、可维护。

Python的装饰器语法糖让这一切变得优雅而直观。掌握装饰器,不仅能提升代码质量,还能让你写出更Pythonic的程序。

相关文章
|
2月前
|
存储 Go 数据库
掌控并发:Go Context 的实战精要
掌控并发:Go Context 的实战精要
229 139
|
18天前
|
人工智能 运维 自然语言处理
说话就能让AI写出顶级代码?Vercel官方经验包来了
## 先说前提:这个干嘛的 用大白话说:Vercel是全球最大的网页托管平台。 你知道GitHub吗?全球最大的代码托管平台。 Vercel就是网页版的GitHub,全世界数百万网站都用它托管。 服务过哪些大牌? 有字节跳动、Adobe、IBM这些巨头。 现在Vercel把内部多年积累的开发经验,打包成了一个 经验包。 你不用学技术,不用背规则,甚至不用看文档。 只要正常跟AI说话,AI就会
391 131
|
3天前
|
人工智能 自然语言处理 搜索推荐
2026打工人必备偷懒工具:OpenClaw(Clawdbot)阿里云极速部署+5大高效AI工作流分享
在AI工具遍地的今天,很多人手里握着OpenClaw这样的“数字员工”,却只把它当普通搜索引擎使用,浪费了其强大的自动化能力。其实,OpenClaw的核心价值在于通过简单提示词搭建专属工作流,让AI替你处理开会准备、定期复盘、学习成长、副业创作等重复工作,让效率提升5倍以上。
291 130
|
5天前
|
Python
5个提升效率的Python技巧
5个提升效率的Python技巧
172 135
|
20天前
|
监控 测试技术 Python
优雅的Python装饰器:让代码更简洁高效
优雅的Python装饰器:让代码更简洁高效
209 137
|
20天前
|
设计模式 缓存 监控
Python装饰器:让代码更优雅的“语法糖”
Python装饰器:让代码更优雅的“语法糖”
224 136
|
5天前
|
索引 Python
Python 技巧让你的代码更Pythonic
Python 技巧让你的代码更Pythonic
151 124
|
20天前
|
设计模式 监控 测试技术
如何优雅地使用Python装饰器提升代码可读性
如何优雅地使用Python装饰器提升代码可读性
185 137
|
16天前
|
安全 数据库连接 数据库
掌握Python上下文管理器:优雅资源管理的艺术
掌握Python上下文管理器:优雅资源管理的艺术
224 155
|
16天前
|
Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
248 151

热门文章

最新文章