Python 之 装饰器的写法

  • Post category:other

Python之装饰器的写法

在Python中,装饰器是一种用于修改或增强函数或类的行为的语法结构。装饰器可以在不修改原始函数或类定义的情况下,动态地添加功能或修改行为。以下是Python装饰器的详细攻略,包括两个示例。

示例1:装饰器的基本语法

以下是装饰器的基本语法:

def decorator(func):
    def wrapper(*args, **kwargs):
        # 在调用原始函数之前执行的代码
        result = func(*args, **kwargs)
        # 在调用原始函数之后执行的代码
        return result
    return wrapper

@decorator
def my_function():
    # 原始函数的代码
    pass

在这个示例中,我们定义了一个名为decorator的装饰器函数。装饰器函数接受一个函数作为参数,并返回一个新的函数wrapper。wrapper函数包装了原始函数,并在调用原始函数之前和之后执行一些代码。最后,我们使用@符号将装饰器应用于my_function函数。

示例2:带参数的装饰器

以下示例演示如何编写带参数的装饰器:

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

@repeat(num=3)
def my_function():
    print("Hello, World!")

my_function()

在这个示例中,我们定义了一个名为repeat的装饰器函数,它接受一个参数num。repeat函数返回一个decorator函数,decorator函数接受一个函数作为参数,并返回一个新的函数wrapper。wrapper函数包装了原始函数,并在调用原始函数之前和之后执行一些代码。在这个示例中,我们使用@repeat(num=3)语法将装饰器应用于my_function函数,表示my_function函数将被重复调用3次。

结论

Python装饰器是一种用于修改或增强函数或类的行为的语法结构。装饰器可以在不修改原始函数或类定义的情况下,动态地添加功能或修改行为。在Python中,我们可以使用装饰器来实现各种功能,例如日志记录、性能分析、缓存等。