Курс 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. Фильтрация списков с itertools
  2. Курс Data Scientist в медицине
  3. Добавление цвета в консоли
  4. Управление ресурсами с контекстными менеджерами
  5. Вывод букв строки в Python
  6. Удаление символа из строки
  7. Работа со словарями в Python
  8. Удаление элемента из списка
  9. Метод join() для объединения элементов
  10. Работа с путями в Python
  11. Декоратор @override
  12. Удаление элементов из списка в Python
  13. Antigravity модуль
  14. Создание циклической ссылки
  15. Транспонирование 2D-массива с помощью zip
  16. Отступы в Python
  17. Создание словарей в Python
  18. Капитализация строк
  19. Преобразование букв в нижний регистр
  20. Использование type hints
  21. Экспорт внешнего файла с помощью writefile
  22. Оператор is в Python
  23. Синхронизация потоков с time.sleep()
  24. Работа с файлами в Python
  25. Блок try…finally в Python
  26. Замена символов в строке
  27. Генераторы в Python
  28. Измерение времени выполнения
  29. PEP-401: оператор
  30. Декораторы в Python
  31. Метод lt для сортировки объектов
  32. Операторы присваивания в Python
  33. Копирование в Python
  34. Псевдонимы в Python
  35. Mad Libs Generator
  36. Удаление дубликатов в pandas
  37. Функция enumerate в Python
  38. Выражения-генераторы в Python
  39. Символ подчеркивания в Python
  40. Декораторы в Python
  41. Метод eq для сравнения объектов
  42. Запуск внешнего кода в Jupyter
  43. Передача аргументов в Python
  44. Измерение времени выполнения кода
  45. Регистрация на хакатоне
  46. Подсчет количества элементов в списке

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