Курс Python → Декораторы в Python
Декораторы в Python представляют собой специальный синтаксис, который позволяет нам изменять поведение функций или методов без изменения их исходного кода. Для написания собственного декоратора в Python, нам нужно определить функцию, которая будет являться декоратором, и применить ее к целевой функции с помощью символа @.
def my_decorator(func):
def wrapper():
print("Before function is called")
func()
print("After function is called")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
В данном примере мы создали декоратор my_decorator, который выводит сообщения до и после вызова целевой функции say_hello. При использовании декоратора @my_decorator перед определением функции say_hello, мы расширили функциональность функции say_hello без изменения ее кода.
Декораторы могут принимать аргументы, что позволяет нам настраивать их поведение. Для передачи аргументов в декоратор, мы можем определить еще одну внутреннюю функцию, которая будет принимать эти аргументы и передавать их внутреннему декоратору.
def my_decorator_with_args(arg1, arg2):
def decorator(func):
def wrapper():
print(f"Arguments passed to decorator: {arg1}, {arg2}")
func()
return wrapper
return decorator
@my_decorator_with_args("arg1_value", "arg2_value")
def say_hello():
print("Hello!")
say_hello()
В этом примере мы создали декоратор my_decorator_with_args, который принимает два аргумента и передает их внутреннему декоратору, который затем выводит их значения перед вызовом целевой функции say_hello. Таким образом, мы можем настраивать поведение декораторов в зависимости от переданных аргументов.
Другие уроки курса "Python"
- Итерации в Python
- Оценка выражений генератора в Python
- Конкатенация строковых литералов
- Удаление файлов и папок в Python
- Импорт объектов из модулей
- Логирование с Loguru
- Шаблоны Flask: условия и циклы
- Проверка индексов коллекции
- Открытие и запись файлов
- Объединение списков с помощью zip
- split() без разделителя
- Функции map() и reduce() в Python
- Получение частей дроби
- Установка и использование emoji
- Тестирование модели в PyTorch
- Создание и обучение модели с Keras
- Многострочные строки в Python
- Управление асинхронными задачами с помощью Semaphore
- Декораторы в Python
- Упрощение работы с JSON-данными в Python
- Python enumerate() использование
- Namedtuple в Python
- Генераторы в Python
- Метод append() для списка
- Функции all() и any() в Python
- Создание виртуальной среды
- Асинхронное программирование с asyncio
- Метод setdefault() в Python
- Функции min(), max(), sum()
- Метод __ixor__ для побитового исключающего ИЛИ
- Управление контекстом с помощью декоратора contextmanager
- Копирование словарей и списков в Python
- Метод сравнения объектов в Python
- Метод join() для объединения элементов строки
- Особенности ключей словаря в Python
- Работа с асинхронными задачами в Python
- Возврат нескольких значений
- Округление банкира в Python
- Подписка на @SelectelNews
- Контроль точности вывода чисел
- Работа с IP-адресами в Python
- Lambda Functions in Python
- Избегайте использования goto
- Оператор zip в Python
- Форматирование строк в Python
- Работа с JSON данными в Python















