772просмотров
12.0%от подписчиков
9 декабря 2024 г.
Score: 849
Когда вы пишете декоратор в Python, почти всегда стоит использовать .wraps. def atomic(func): .wraps(func) def wrapper(): print('BEGIN') func() print('COMMIT') return wrapper Он обновляет обёртку wrapper, чтобы она выглядела как оригинальная функция func. Декоратор копирует атрибуты name, module и doc из функции func в её обёртку. Это может быть полезно при генерации документации с помощью pydoc, написании тестов с doctest, или при использовании инструментов для интроспекции. Однако стоит помнить, что в трассировке стека всё ещё будет отображаться оригинальное имя функции, поскольку оно хранится в wrapper.code.co_name. 👉