Курс 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"
- Создание GUI с Tkinter: Entry
- Перемешивание списка с shuffle()
- Очистка строки в Python
- GitHub в Telegram: подписка на уведомления
- Преобразование многоуровневого словаря
- Метод join() для объединения строк
- Обработка исключений в Python
- Замена подстроки
- Документация функции help() в Python
- Операции с датами в Python
- Изменение элемента списка
- Реализация метода __abs__ в Python
- Копирование объектов в Python
- Метод split() для разделения строк
- Python Translator: создание локальных переводчиков
- Работа с пользовательским вводом
- Работа с файлами в Python
- Преобразование чисел в слова
- Метод bool() в Python
- Удаление элемента по индексу в Python
- Python reversed() vs срез[::-1]
- Печать календаря
- Блок else в Python
- Исправление ошибки NameError
- Автоматизация скриптов на AWS Lightsail.
- Абстракции словарей и множеств в Python
- Переопределение метода sub
- Генераторы в Python
- Регулярные выражения: метод match
- Разделение строки с помощью split()
- Ограничение итераций в Python
- Поиск индекса элемента
- GitHub в Telegram: подписка на уведомления
- Пропуск строк в файле с itertools
- Инвертирование словаря
- Преобразование чисел в Python
- Сравнение строк в Python
- Красивый вывод списка
- Удаление элементов по срезу
- История Python
- Работа с контекст-менеджером «with»
- Изменения в обработке логических значений
- Enum в Python: создание и использование перечислений
- Метод is_absolute() для PurePath
- Распаковка аргументов в Python
- Проверка типов с использованием isinstance
- Проверка версии Python
- Доступ к локальным переменным
- Копирование в Python















