python wraps装饰器用法
时间: 2023-07-06 16:33:01 浏览: 103
使用 `wraps` 装饰器的基本语法如下:
```python
from functools import wraps
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
# 在调用原始函数之前或之后执行一些操作
return func(*args, **kwargs)
return wrapper
```
这里的 `decorator` 是一个自定义的装饰器函数,它接受一个函数作为参数并返回另一个函数。在装饰器内部,我们定义了一个 `wrapper` 函数,它接受任意数量的位置参数和关键字参数,并在调用原始函数之前或之后执行一些操作。注意,在 `wrapper` 函数之前加上 `@wraps(func)` 装饰器,这会将原始函数的元信息复制到 `wrapper` 函数中。这样,通过调用 `help(wrapper)` 或 `wrapper.__doc__`,我们可以访问到原始函数的文档字符串。例如:
```python
@decorator
def my_func(x, y):
"""这是一个示例函数"""
return x + y
print(my_func.__name__) # 输出:my_func
print(my_func.__doc__) # 输出:这是一个示例函数
```
这里的 `my_func` 是一个示例函数,使用 `decorator` 装饰器进行装饰。我们可以看到,通过 `@wraps(func)` 装饰器,`wrapper` 函数继承了原始函数 `my_func` 的元信息,包括函数名和文档字符串。
阅读全文