Декоратор wraps из модуля functools используется для сохранения метаданных оборачиваемой функции (таких как имя, docstring, аннотации и модуль) при создании функции-обертки.
Без wraps, обернутая функция будет иметь метаданные функции-обертки, что может затруднить отладку, интроспекцию и использование инструментов (например, Sphinx для документации).
python
Итоговая таблица для сравнения:
| Атрибут | Без functools.wraps | С functools.wraps |
|---|---|---|
__name__ | Имя функции-обертки | Имя оригинальной функции |
__doc__ | Docstring функции-обертки | Docstring оригинальной функции |
__module__ | Модуль функции-обертки | Модуль оригинальной функции |
__annotations__ | Аннотации функции-обертки | Аннотации оригинальной функции |
__wrapped__ | Нет | Ссылка на оригинальную функцию |