Курс 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"
- Оператор @ для умножения матриц
- Поиск HTML-элементов с BeautifulSoup
- Python 3.12: Псевдонимы типов
- Обработка данных в Python
- Модуль os в Python: работа с файлами
- Транспонирование 2D-массива с помощью zip
- Метод __imod__ для Python
- Функция zip() — объединение последовательностей
- Склеивание строк без циклов
- Метод lt для сортировки объектов
- Методы split() и join() — Python строк.
- Множественные конструкторы в Python
- Библиотека funcy: удобные утилиты
- Работа с рекламными данными в Pandas
- Глобальные переменные в Python
- Настройка шрифта и цвета в Tkinter
- Оператор морж в Python 3.8
- Принципы LSP и ISP в Python
- Возвращение нескольких значений
- Переменные в Python: сокращение гласных
- Копирование в Python
- Установка максимального количества цифр
- Подсчет количества элементов в списке
- Оформление кода по PEP 8
- Вакансии в Nebius
- Управление импортом в Python
- Переворот строки
- Отправка HTTP-запросов в Python
- Работа со строками
- Именованные срезы в Python
- Оператор умножения для вектора
- Генерация резюме в Gensim
- Изменение переменной в Python: nonlocal
- Мониторинг памяти с Pympler
- Разделение строк в Python
- Создание комплексных чисел
- Работа с аргументами командной строки
- Безопасный доступ к значениям словаря
- Тайное преобразование типа ключа
- Хэш-функции и метод цепочек
- Функция enumerate в Python
- Обработка ошибок в Python
- Поиск уникальных и повторяющихся элементов
- OrderedDict — упорядоченный словарь
- Компиляция регулярных выражений
- Сравнение def и lambda функций в Python
- Работа с CSV файлами
- Отслеживание прогресса с tqdm
- Метод __float__ в Python















