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

相关推荐
counting money3 小时前
Java IO流详解:从InputStream到文件操作实战
java·开发语言·python
坚持学习前端日记3 小时前
Python SQLAlchemy ORM 从0到1精通实战手册(基础到复杂高阶)
数据库·python·oracle
北斗落凡尘4 小时前
LangGraph 入门实战(11)--输出模式
后端·python·langchain
雪碧聊技术4 小时前
安装Python(保姆级教程)
python·版本更新·python下载
++==4 小时前
JSON和Python的 四种核心容器
python·json
张龙6877 小时前
uv 全面指南:比 pip 快 100 倍的 Python 包管理器,从安装到团队落地
后端·python
@HNUSTer7 小时前
Python数据可视化科技图表绘制系列教程(八)
python·数据可视化·科技论文·专业制图·科研图表
专注仿真8 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
满怀冰雪9 小时前
22-使用 PaddleClas 快速训练图像分类模型
人工智能·python·机器学习·分类·数据挖掘·paddlepaddle
gb42152879 小时前
python中Web应用服务器
开发语言·前端·python