Зачем нужен декоратор @wraps в Python

Python Middle Aston
Зачем нужен декоратор @wraps в Python
Ответы
Декоратор `@wraps` из модуля `functools` используется для сохранения метаданных (имя, docstring, аннотации и т. д.) оригинальной функции при её обёртке в декоратор. Без него декорированная функция теряет свою идентичность, что может вызвать проблемы при интроспекции (например, `help()` или `func.__name__`). Пример без `@wraps`: ``` def decorator(func): def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper @decorator def test(): """Docstring""" pass print(test.__name__) # Выведет 'wrapper', а не 'test' ``` С `@wraps`: ``` from functools import wraps def decorator(func): @wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper @decorator def test(): """Docstring""" pass print(test.__name__) # Выведет 'test' ```