python写一个装饰器,效果是输出函数所有参数的内容和返回值的内容,运行代码,运行结果并加注释
时间: 2024-02-15 21:04:08 浏览: 29
好的,以下是符合您要求的装饰器代码及其解释注释:
```python
def log_func(func):
def wrapper(*args, **kwargs):
# 输出函数名称
print(f"Function name: {func.__name__}")
# 输出函数所有位置参数
print(f"Positional arguments: {args}")
# 输出函数所有关键字参数
print(f"Keyword arguments: {kwargs}")
# 执行函数并获取返回值
result = func(*args, **kwargs)
# 输出返回值
print(f"Return value: {result}")
# 返回函数返回值
return result
# 返回装饰后的函数
return wrapper
```
解释注释:
1. 定义一个装饰器函数 `log_func`,它接收一个函数 `func` 作为参数。
2. 定义一个内部函数 `wrapper`,它接收任意个位置参数 `*args` 和任意个关键字参数 `**kwargs`。
3. 在 `wrapper` 中,先输出被装饰函数的名称 `func.__name__`。
4. 再输出所有位置参数 `args`。
5. 再输出所有关键字参数 `kwargs`。
6. 执行被装饰函数,并将返回值存储在变量 `result` 中。
7. 输出返回值 `result`。
8. 最后返回函数 `wrapper`。
9. 当使用 `@log_func` 装饰一个函数时,每次调用该函数都会输出该函数的名称、所有位置参数、所有关键字参数和返回值。