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

相关推荐
DeniuHe3 分钟前
sklearn中不同交叉验证方法的场景适配
人工智能·python·sklearn
隐于花海,等待花开1 小时前
16.Python 常用第三方库概览 深度解析
python
我材不敲代码1 小时前
Python 函数核心:位置参数与关键字参数详解
java·前端·python
风落无尘1 小时前
第十一章《对齐与安全》 完整学习资料
python·安全·机器学习
Kratzdisteln1 小时前
【无标题】
前端·python
hakesashou1 小时前
python文件操作需要导入模块吗
python
wuxinyan1231 小时前
工业级大模型学习之路029:解决双智能体调用数据库报错问题
数据库·人工智能·python·学习·智能体
SunnyDays10111 小时前
Python操作Excel批注:从基础添加到高级自定义的完整指南
开发语言·python·excel
独隅1 小时前
PyTorch自动微分模块:从原理到实战一
人工智能·pytorch·python
汤米粥2 小时前
python学习——核心语法三
java·python·学习