Курс 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"
- Метод rsub для пользовательских чисел
- Mad Libs Generator
- Игра «Угадывание чисел»
- Определение относительного пути
- Декораторы в Python
- Проверка строки на палиндром
- Класс Counter() для подсчета элементов
- Оформление текста в консоли с TermColor
- Разбиение текста в Python
- Получение значений из словарей
- Форматирование вывода списков
- Список импортированных модулей в Python
- Обезопасьте ввод данных
- Удаление дубликатов из списка с помощью dict.fromkeys
- Работа с массивами в Python
- Объединение кортежей в Python
- Оптимизация интернирования строк
- List Comprehension Tutorial
- Удаление URL-адресов в Python
- Лямбда-функции в Python
- Работа с IP-адресами в Python
- Создание пар из последовательностей
- Руководство по библиотеке pydantic
- Оператор (*) в Python
- Разделение строки с регулярными выражениями
- Defaultdict в Python
- Объединение списков в строку
- Big O оптимизация
- Отслеживание прогресса с tqdm
- Перевод двоичного кода в целое число
- Генераторы в Python
- Bootle — простой веб-фреймворк
- Порядок и длина множеств в Python
- Метод lt для сортировки объектов
- Импорт в Python: список all
- Удаление элемента по индексу в Python
- Оптимизация строк в Python
- Логирование с Loguru
- Вызов функций по строке в Python.
- Создание словаря и множества
- Генераторы списков в Python
- Импорт модулей в Python 3.12
- Метод join() для объединения строк
- Распаковка аргументов в Python
- Запуск файлового сервера
- Работа с IP-адресами в Python
- Участие в LP стейкинге Waves
- Создание новых функций с помощью functools.partial
- Генерация случайных данных в NumPy















