深入理解Python装饰器

什么是装饰器?

装饰器(Decorator)是Python中一种强大的语法特性,它允许你在不修改原函数代码的情况下,为函数添加新的功能。

装饰器本质上是一个高阶函数,它接受一个函数作为参数并返回一个新的函数。

基本装饰器

def my_decorator(func):
    def wrapper():
        print("函数执行前")
        func()
        print("函数执行后")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()
# 输出:
# 函数执行前
# Hello!
# 函数执行后

带参数的装饰器

def repeat(n):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(n):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator

@repeat(3)
def greet(name):
    print(f"你好, {name}!")

greet("Python")

类装饰器

class Timer:
    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        import time
        start = time.time()
        result = self.func(*args, **kwargs)
        end = time.time()
        print(f"执行时间: {end - start:.4f}秒")
        return result

@Timer
def slow_function():
    import time
    time.sleep(1)
    return "完成"

实际应用场景

场景 装饰器示例 说明
日志记录 @log 记录函数调用信息
权限验证 @requires_auth 检查用户权限
缓存 @cache 缓存函数结果
重试 @retry(3) 失败时自动重试
计时 @timer 测量执行时间

总结

装饰器是Python中非常优雅的代码复用方式,掌握它能让你的代码更加简洁和可维护。


本文介绍了Python装饰器的基础知识和进阶用法。

2f691724668330.png