如何使用装饰器来设置默认参数?
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
解释:
-
my_decorator
函数定义了一个装饰器,名为wrapper
。 -
wrapper
函数是一个新的函数,它将原始函数作为参数传递给func
。 - 当
my_function
被调用时,wrapper
函数被创建并附加到它的调用中。 -
wrapper
函数在func
调用之前被调用,并在调用结束后被调用。 -
wrapper
函数可以接受任何数量的 arguments 和关键字参数,并将其传递给func
。 - 如果
age
参数没有提供,wrapper
函数将使用默认值25
。
使用默认参数:
您可以使用 *kwargs
关键字参数来传递所有非默认参数给装饰器。例如,以下代码将使用 name
和 age
参数来调用 my_function
:
print(my_function("John", age=30))
注意:
- 默认参数必须在装饰器定义的最后。
- 如果您需要使用默认参数,请确保它们在
kwargs
中。 - 如果您需要使用多个默认参数,请使用列表或元组。