wraps(func)举例
时间: 2024-11-30 17:14:45 浏览: 15
`wraps(func)` 是 Python 的 functools 模块中的一个装饰器,它用于保持函数元信息(如名称、文档字符串、类型注解等)的一致性,尤其是在高阶函数(如装饰器)中修改被装饰函数的行为时。例如:
```python
from functools import wraps
def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("Before function call")
result = func(*args, **kwargs)
print("After function call")
return result
return wrapper
@my_decorator
def hello(name):
"""This is a sample function"""
return f"Hello, {name}"
# 使用 wraps 装饰后,hello 函数的元信息保持不变
print(hello.__name__) # 输出 "hello"
print(hello.__doc__) # 输出 "This is a sample function"
hello("Alice") # 输出 "Before function call", "Hello, Alice", "After function call"
```
在这个例子中,`my_decorator` 维持了 `hello` 函数的基本属性,并在调用前后添加了自己的额外操作。如果没用 `wraps`,`hello` 的元信息会丢失。
阅读全文