Курс 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"
- Капитализация строк
- Измерение времени выполнения кода
- Переопределение метода sub
- Переопределение метода __or__()
- Сравнение объектов в Python
- Создание OrderedDict
- Установка Home Assistant
- Принципы Zen Python
- Создание и использование модулей в Python
- Обязательные аргументы в Python
- Расширение информации об ошибке в Python
- Поиск подстроки в строке
- Проверка на палиндром
- Форматирование строк в Python
- Defaultdict в Python
- Встраивание HTML в Jupyter Notebook
- Типы возвращаемых значений в Python
- Уникальность ключей в словаре
- Обновление множества в Python
- Приоритет операций в Python
- Дефолтные параметры в Python
- Разрешение имен в Python
- Enum в Python
- Метод join() для объединения элементов строки
- Функции в Python
- Создание обратного итератора
- Обработка элементов в Python
- Методы __repr__ и __str__ в Python
- Область видимости переменных
- Установка и использование Logzero
- Разность множеств
- Метод rename() для переименования файлов и каталогов
- Именование переменных в Python
- Цикл for в Python
- Измерение потребления памяти при сортировке
- Импорт классов из другого файла
- Расчет времени выполнения программы
- Работа с комплексными числами в Python
- Просмотр внешних файлов в %pycat
- Создание треугольника Паскаля
- Отправка POST запроса на сервер.
- Декоратор для группы пользователей в Django
- Метод get() в Python















