大锤python日记(装饰器的参数)

126 阅读1分钟

带参数的装饰器是指可以接受参数并返回一个装饰器函数的函数。这个装饰器函数会接受原始函数作为参数,并且在函数的运行前后执行一些附加操作。

以下是一个示例:

def decorator_with_arguments(arg1, arg2):
    def decorator(func):
        def wrapper(*args, **kwargs):
            print("Decorator arguments:", arg1, arg2)
            func(*args, **kwargs)
            print("Decorator finished")
        return wrapper
    return decorator

在这个例子中,decorator_with_arguments 接受两个参数 arg1arg2,然后返回一个装饰器函数 decoratordecorator 接受一个函数作为参数,并返回一个新的函数 wrapperwrapper 函数在运行原始函数之前和之后打印出一些信息。

使用带参数的装饰器,例如:

@decorator_with_arguments("hello", 123)
def say_hello():
    print("Hello World!")
    
say_hello()

输出结果:

Decorator arguments: hello 123
Hello World!
Decorator finished

在这个示例中,我们将 decorator_with_arguments 应用到 say_hello 函数上,同时传递了两个参数 "hello"123。然后,当我们调用 say_hello 函数时,实际上调用的是 wrapper 函数。在 wrapper 函数内部,我们先打印出了装饰器的参数值,然后调用了原始函数 say_hello。当 say_hello 函数运行完毕后,我们再打印一条信息,表示装饰器的工作已经完成。