定义两个函数,分别用于实现加法和减法运算。要求定义一个装饰器,为所定义的前两个函数添加参数输出功能
时间: 2023-07-15 15:15:48 浏览: 124
可以这样实现:
```python
def output_args(func):
def wrapper(*args, **kwargs):
print("Function arguments:", args, kwargs)
return func(*args, **kwargs)
return wrapper
@output_args
def add(x, y):
return x + y
@output_args
def subtract(x, y):
return x - y
```
在这个装饰器中,我们定义了一个新的函数 `wrapper`,它接受任意数量和类型的位置参数和关键字参数 `*args` 和 `**kwargs`,并将它们打印出来。然后,它调用被装饰的函数 `func` 并返回其结果。最后,我们返回这个新函数 `wrapper`。
使用装饰器 `@output_args`,我们将它们应用到两个函数 `add` 和 `subtract` 上,这样它们就具有了参数输出的功能。例如:
```python
>>> add(1, 2)
Function arguments: (1, 2) {}
3
>>> subtract(5, 3)
Function arguments: (5, 3) {}
2
```
我们可以看到,在调用 `add(1, 2)` 和 `subtract(5, 3)` 时,装饰器 `@output_args` 自动将它们的参数输出到控制台上。
阅读全文