如何使用装饰器来设置默认参数?

如何使用装饰器来设置默认参数?

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("Before calling the function")
        result = func(*args, **kwargs)
        print("After calling the function")
        return result
    return wrapper


@my_decorator
def my_function(name, age=25):
    return f"Hello, {name}!"

print(my_function("John"))

运行结果:

Before calling the function
Hello, John!
After calling the function

解释:

  1. my_decorator 函数定义了一个装饰器,名为 wrapper
  2. wrapper 函数是一个新的函数,它将原始函数作为参数传递给 func
  3. my_function 被调用时,wrapper 函数被创建并附加到它的调用中。
  4. wrapper 函数在 func 调用之前被调用,并在调用结束后被调用。
  5. wrapper 函数可以接受任何数量的 arguments 和关键字参数,并将其传递给 func
  6. 如果 age 参数没有提供,wrapper 函数将使用默认值 25

使用默认参数:

您可以使用 *kwargs 关键字参数来传递所有非默认参数给装饰器。例如,以下代码将使用 nameage 参数来调用 my_function

print(my_function("John", age=30))

注意:

  • 默认参数必须在装饰器定义的最后。
  • 如果您需要使用默认参数,请确保它们在 kwargs 中。
  • 如果您需要使用多个默认参数,请使用列表或元组。
相似内容
更多>