Курс 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"
- Работа с NumPy массивами
- Игра «Угадывание чисел»
- Создание и операции с дробями
- Генераторы словарей и множеств
- Форматирование вывода списков
- Метод pop() списка
- Оператор is в Python
- Оператор обр. импликации
- Поиск файлов по шаблону
- Область видимости переменных
- Роль object и type в Python
- Проверка наличия элемента в списке
- Замыкания в Python
- Работа с модулем cmath
- Оператор space-invader
- Возврат нескольких значений
- Python Calendar Usage
- Модуль subprocess: запуск внешних команд
- Замер времени выполнения кода
- Удаление и повторная вставка ключа в OrderedDict
- Работа с классами данных
- Синхронизация потоков с time.sleep()
- Функции-генераторы в Python
- Поиск наиболее частого элемента списке
- Освобождение памяти в Python
- Выборка чисел
- Создание namedtuple списком полей
- Расчет времени выполнения
- Декораторы классов
- Получение обратного списка чисел
- Установка и использование Logzero
- Методы __repr__ и __str__ в Python
- Применение функции map() в Python
- Структура данных deque в Python
- Разделение списка на гнппы
- Любовь к Python
- Работа с CSV в Python
- Работа с контекст-менеджером «with»
- Работа с временем в Python
- Генератор надежных паролей
- Сравнение строк в Python
- Определение основы слова с showballstemmer
- Функция format() в Python
- Переменная Шредингера
- Оптимизация строк в Python















