写一个装饰器,效果是输出函数所有参数的内容和返回值内容。标注释和验证方法
时间: 2024-02-15 16:04:03 浏览: 61
好的,我可以为您编写该装饰器。以下是代码:
```python
from functools import wraps
def log(func):
@wraps(func)
def wrapper(*args, **kwargs):
# 打印函数参数
print('Calling "{}" function with arguments:'.format(func.__name__))
print('\t- positional arguments: {}'.format(args))
print('\t- keyword arguments: {}'.format(kwargs))
# 执行函数
result = func(*args, **kwargs)
# 打印函数返回值
print('Function "{}" returns: {}'.format(func.__name__, result))
# 返回函数执行结果
return result
return wrapper
```
这是一个装饰器函数,可以将其应用于任何函数上。它会在函数被调用时打印出所有传入的参数和函数的返回值。
以下是如何使用这个装饰器:
```python
@log
def add(x, y):
return x + y
add(2, 3)
```
输出结果如下:
```
Calling "add" function with arguments:
- positional arguments: (2, 3)
- keyword arguments: {}
Function "add" returns: 5
```
这样,我们就可以对任何函数使用 `@log` 装饰器,以输出其参数和返回值。
阅读全文