Python 装饰器

65 阅读1分钟
装饰器(decorators)是 Python 中的一种高级功能,它允许你动态地修改函数或类的行为
装饰器是一种函数,它接受一个函数作为参数,并返回一个新的函数或修改原来的函数。
装饰器的语法使用 @decorator_name 来应用在函数或方法上。
Python 还提供了一些内置的装饰器,比如 @staticmethod 和 @classmethod,用于定义静态方法和类方法


@time_logger
def target_function():
    pass
等同于:
def target_function():
    pass
target_function = time_logger(target_function)

### 带参数的装饰器
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"Hello, {name}!")

greet("Alice")

### 类装饰器
class DecoratorClass:  
    def __init__(self, func):  
        self.func = func  
     
    def __call__(self, *args, **kwargs):  
        # 在调用原始函数之前/之后执行的代码  
        result = self.func(*args, **kwargs)  
        # 在调用原始函数之后执行的代码  
        return result  
  
@DecoratorClass  
def my_function():  
    pass