Курс Python → Декораторы с @wraps

Декораторы — это мощный инструмент в Python, который позволяет добавлять функциональность к существующим функциям без их изменения. Они позволяют разделять код, улучшать его читаемость и повторное использование. Одним из способов создания декораторов является использование декоратора @wraps из модуля functools.

Пример использования декоратора @wraps представлен ниже. Предположим, у нас есть функция my_function, которую мы хотим декорировать с помощью my_decorator. Для этого мы определяем функцию my_decorator, внутри которой создаем внутреннюю функцию wrapper. С помощью декоратора @wraps мы копируем метаданные из декорируемой функции func, включая имя функции, документацию и другие атрибуты.

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        # Дополнительный код до вызова функции
        result = func(*args, **kwargs)
        # Дополнительный код после вызова функции
        return result
    return wrapper

@my_decorator
def my_function():
    # Реализация функции
    pass

my_function()

В данном примере, после декорирования функции my_function с помощью @my_decorator, мы можем вызвать ее как обычную функцию. При этом все атрибуты исходной функции будут сохранены благодаря декоратору @wraps. Это позволяет избежать потери метаданных и обеспечивает корректное отображение имени функции, документации и других атрибутов.

Использование декораторов с декоратором @wraps упрощает работу с функциями и повышает их надежность. Благодаря этому подходу код становится более читаемым, модульным и легко поддерживаемым. Декораторы позволяют добавлять общую функциональность к различным функциям, не затрагивая их исходный код.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Преобразование списка в словарь через генератор
  2. Удаление элементов из списка
  3. Работа с географическими данными.
  4. Локальные переменные.
  5. Оператор in для Python
  6. Подписка на каналы разработчиков
  7. Операторы Splat и splatty-splat
  8. Просмотр внешних файлов в %pycat
  9. Ускорение обработки данных с %autoawait
  10. Декораторы с аргументами в Python
  11. Принципы Zen Python
  12. Управление ресурсами в Python
  13. Измерение времени выполнения в Python
  14. Метод is_absolute() для PurePath
  15. Официальный канал Python в Telegram
  16. Основы работы со списками
  17. Документирование функций в Python
  18. Методы и функции в Python
  19. Генератор надежных паролей
  20. Генератор бросков кубиков
  21. Работа с Telegram API на Python
  22. Форматирование заголовков в Python
  23. Профилирование с Pandas
  24. Комментарии в Python
  25. Печать комбинаций в Python с Itertools
  26. Объединение строк с помощью метода join
  27. Сравнение def и lambda функций в Python
  28. Метод __call__ в Python
  29. Разделение строки на подстроки в Python
  30. Экспорт данных в файл.
  31. Модуль subprocess: запуск внешних команд
  32. Извлечение новостей с newspaper3k
  33. Получение текущей директории
  34. Python Метод Union Множеств
  35. Отправка POST запроса на сервер.
  36. Работа с модулем Calendar
  37. Транспонирование 2D-массива с помощью zip
  38. Создание GUI с Tkinter: Entry
  39. Применение функции map() в Python
  40. Работа с JSON в Python
  41. Цепные операции в Python
  42. Непрерывная проверка в Python
  43. Применение функции к списку
  44. Генераторы списков

Marketello читают маркетологи из крутых компаний