Курс 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
- Сортировка списка по индексам
- Сравнение def и lambda функций в Python
- Фильтрация списков с itertools
- Вложенные генераторы в Python
- Удаление символа из строки
- Изменение переменной в Python: nonlocal
- Показ всплывающих окон Tkinter
- Взаимодействие с sys
- Библиотека sh: использование команд bash в Python
- Метод add для класса Vector
- Создание виртуальной среды
- Counter() — подсчет элементов
- Генерация UUID в Python
- Переопределение метода len
- Методы __repr__ и __str__ в Python
- Объединение списков в строку
- Частичное совпадение ввода
- Метод radd для пользовательских чисел
- Объединение строк с помощью метода join
- Конкатенация строк с помощью join()
- Работа с изменяемыми списками
- Генерация случайных чисел Python
- Поиск HTML-элементов с BeautifulSoup
- Создание генераторов в Python
- Метод matmul для умножения матриц
- Создание даты из строки ISO
- Генерация случайных чисел в Python
- Логирование с Logzero
- Обход словаря в Python
- Применение функции к элементам списка
- Цикл for в Python
- Поиск email
- Глобальные переменные в Python
- Группы исключений в Python
- Python enumerate() функции
- Работа с изображениями PIL
- Функции map, filter, reduce
- Управление сессиями в Python
- Эффективная конкатенация строк в Python
- Срезы в Python
- Распаковка элементов массива
- JMESPath в Python















