Курс 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. Метод rsub для пользовательских чисел
  2. Mad Libs Generator
  3. Игра «Угадывание чисел»
  4. Определение относительного пути
  5. Декораторы в Python
  6. Проверка строки на палиндром
  7. Класс Counter() для подсчета элементов
  8. Оформление текста в консоли с TermColor
  9. Разбиение текста в Python
  10. Получение значений из словарей
  11. Форматирование вывода списков
  12. Список импортированных модулей в Python
  13. Обезопасьте ввод данных
  14. Удаление дубликатов из списка с помощью dict.fromkeys
  15. Работа с массивами в Python
  16. Объединение кортежей в Python
  17. Оптимизация интернирования строк
  18. List Comprehension Tutorial
  19. Удаление URL-адресов в Python
  20. Лямбда-функции в Python
  21. Работа с IP-адресами в Python
  22. Создание пар из последовательностей
  23. Руководство по библиотеке pydantic
  24. Оператор (*) в Python
  25. Разделение строки с регулярными выражениями
  26. Defaultdict в Python
  27. Объединение списков в строку
  28. Big O оптимизация
  29. Отслеживание прогресса с tqdm
  30. Перевод двоичного кода в целое число
  31. Генераторы в Python
  32. Bootle — простой веб-фреймворк
  33. Порядок и длина множеств в Python
  34. Метод lt для сортировки объектов
  35. Импорт в Python: список all
  36. Удаление элемента по индексу в Python
  37. Оптимизация строк в Python
  38. Логирование с Loguru
  39. Вызов функций по строке в Python.
  40. Создание словаря и множества
  41. Генераторы списков в Python
  42. Импорт модулей в Python 3.12
  43. Метод join() для объединения строк
  44. Распаковка аргументов в Python
  45. Запуск файлового сервера
  46. Работа с IP-адресами в Python
  47. Участие в LP стейкинге Waves
  48. Создание новых функций с помощью functools.partial
  49. Генерация случайных данных в NumPy

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