Python装饰器实战指南

Python装饰器实战指南

Python装饰器是一种强大的语法特性,可以在不修改函数代码的情况下增强函数功能。

1. 基础装饰器

最简单的装饰器就是一个接受函数并返回新函数的高阶函数:

复制代码
def timer(func):
    import time
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        print(f"{func.__name__} took {time.time()-start:.2f}s")
        return result
    return wrapper

@timer
def slow_function():
    import time
    time.sleep(1)
    return "done"

2. 带参数的装饰器

如果装饰器本身需要参数,就需要再嵌套一层函数:

复制代码
def retry(max_attempts=3):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for i in range(max_attempts):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    if i == max_attempts - 1:
                        raise
                    print(f"Attempt {i+1} failed: {e}")
        return wrapper
    return decorator

3. 实际应用场景

  • 权限校验:在Web开发中检查用户是否登录
  • 缓存:对耗时函数的结果进行缓存
  • 日志:自动记录函数调用和参数
  • 重试:对可能失败的操作自动重试

掌握装饰器是Python进阶的关键一步,建议多加练习。

相关推荐
进击的明明11 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
全栈弄潮儿11 小时前
Python实战第8期:函数
后端·python·编程语言
卷无止境13 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
卷无止境16 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
滴啦嘟啦哒17 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
全栈练习生18 小时前
AI安全与红队测试
python·ai
费曼学习法18 小时前
把「发送成功」当「送达」?我排查 IM 长消息被静默吞掉的完整过程
python·ai编程·自动化运维
鸽鸽程序猿18 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
NetX行者18 小时前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python
MasonYyp18 小时前
asyncio并发协程
python