Курс 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"
- Модуль array: создание и использование массивов
- Обновление данных через PUT запрос
- Генераторы данных
- Обработка данных в Python
- Модуль xkcd: загрузка комиксов
- Создание таблиц в терминале с PrettyTable
- Бесконечные списки в Python
- Сериализация и десериализация объектов
- Список и кортеж в Python
- Сравнение def и lambda-функций
- Установка и использование библиотеки google
- Комментарии в Python.
- Транспонирование 2D-массива с помощью zip
- Python Метод del.
- Оформление кода по PEP 8
- Комплексные числа в Python
- Установка и использование Logzero
- Реверс строки и списка в Python.
- Срезы в Numpy
- Декораторы для регистрации функций
- Проектирование Singleton с метаклассом
- Конкатенация строковых литералов
- Логирование с Logzero
- Шаблоны Flask: условия и циклы
- enumerate() в Python для работы с индексами
- CSV строка разделение в Python
- Работа с путями в Python
- Область видимости переменных в Python
- Библиотека itertools: объединение списков
- Область видимости переменных
- Измерение времени выполнения кода
- Проверка элементов списка условием
- Преобразование данных в Python
- Оператор «not» в Python
- Работа с байтовыми строками в Python
- Лямбда-функции в defaultdict
- Управление фоновыми задачами в Python
- Логические операторы в Python
- Инверсия списка и строки
- Поиск с библиотекой Google
- Создание namedtuple списком полей
- Поиск подстроки в строке
- Метод Event.wait() в Python
- Манипуляция формой массива в Numpy
- Метод radd для пользовательских чисел















