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进阶的关键一步,建议多加练习。

相关推荐
天l志3 小时前
Chrome Extension + 本地服务:浏览器页面上下文采集与远程执行技术设计
python·谷歌浏览器
CodexDave3 小时前
Python 自动化接单实战(九):Windows 免环境交付如何打包与诊断
windows·python·自动化·python自动化·pyinstaller·软件交付·windows打包
CTA量化套保3 小时前
2026年量化入门路线,概念规则和简单实现逐步走
人工智能·python
米码收割机3 小时前
【Python】Python Django+Vue3校园自习室预约管理系统(源码+文档+PPT)【独一无二】
开发语言·python·django
AstartesEternal3 小时前
python第二次作业(列表,字典)
开发语言·python
拉特莉的祈祷机3 小时前
绿色测试日志为什么可能已经失效:用 AET 绑定命令与当前代码
python
三金121384 小时前
Python的一些内置模块
python
NPE~4 小时前
RAG 实战教程:从零构建企业智能问答 Agent
python·ai·实战·rag·agent搭建
BaoshengTT5 小时前
2026年双流区汽车贴膜种类及挑选要点保圣威固7V不凡门店
python
zhiSiBuYu05175 小时前
Flask 请求与响应新手实战指南
后端·python·flask