Junior — Middle
66
Каково предназначение и роль декоратора @wraps в Python?
Companies where asked
Answer from AI
sobes.tech AI
Декоратор @wraps из модуля functools используется для сохранения метаданных оригинальной функции при создании обёрток (декораторов). Без @wraps имя функции, её документация (__doc__), модуль и другие атрибуты заменяются на атрибуты обёртки, что затрудняет отладку и документацию.
Пример использования:
from functools import wraps
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("Вызов функции")
return func(*args, **kwargs)
return wrapper
@decorator
def greet():
"Функция приветствия"
print("Привет!")
print(greet.__name__) # greet
print(greet.__doc__) # Функция приветствия
Без @wraps имя функции было бы wrapper, а документация — None. Таким образом, @wraps помогает сохранить информацию о декорируемой функции.