跳到主要内容

简述什么是Python带参数的装饰器?

参考答案:

Python的装饰器是一种高级Python功能,它允许你修改或增强函数或类的行为。装饰器本质上是一个接受函数作为参数的可调用对象(通常是函数),并返回一个新的函数对象。

带参数的装饰器是装饰器的一个变种,它们可以接受额外的参数,这些参数在装饰器被定义时就已经确定,然后在装饰器函数内部被使用。这些参数可以用来改变装饰器的行为,或者向被装饰的函数传递一些额外的信息。

下面是一个简单的带参数装饰器的例子:

def my_decorator(param):
    def wrapper_function(func):
        def inner_function(*args, **kwargs):
            print(f"Before function call with parameter: {param}")
            result = func(*args, **kwargs)
            print(f"After function call with parameter: {param}")
            return result
        return inner_function
    return wrapper_function

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

say_hello()

在这个例子中,my_decorator 是一个带参数的装饰器。当我们使用 @my_decorator("Hello") 语法装饰 say_hello 函数时,"Hello" 这个参数就被传递给了装饰器。然后,在装饰器内部,这个参数被用来修改被装饰函数的行为,即在函数调用前后打印出这个参数。

需要注意的是,尽管装饰器可以接受参数,但被装饰的函数本身(在这个例子中是 say_hello)在调用时不能接收额外的参数。如果你想让被装饰的函数也能接收额外的参数,你需要在 inner_function 中添加相应的参数。