Курс 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
- Методы shutil для работы с файлами
- Операторы += в Python
- Распаковка с оператором *
- Итераторы с потерямиZIP
- Эффективная конкатенация строк в Python
- Удаление элементов из списка в Python
- Упрощение условных выражений с тернарным оператором
- Класс Counter() для подсчета элементов
- Метод __ilshift__ для битового сдвига влево
- Генератор надежных паролей
- Комментарии в Python
- Обработка исключений в Python
- Работа с NumPy массивами
- Библиотека schedule: планировщик задач
- Определение относительного пути
- Форматирование вывода с F-строками
- Введение в Python
- Разделение строки на подстроки в Python
- Использование функции enumerate()
- Функция enumerate() в Python
- Перегрузка операторов в Python
- Pillow: работа с изображениями
- Класс UserDict: дополнительная функциональность
- Список переменных с %who
- Сериализация объектов в Python
- Создание Radio кнопок в tkinter
- Разработка Telegram-ботов
- Разработка игры Pong с turtle
- Модуль subprocess: запуск внешних команд
- Управление экспортом элементов
- Определение объема памяти объекта
- Явный импорт в Python
- Использование модуля __future__
- Создание именованных кортежей в Python
- Управление асинхронными задачами с помощью Semaphore
- Функция format() в Python
- Операторы увеличения и уменьшения в Python
- Нахождение самого длинного слова в списке с помощью max
- Оптимизация сравнения в Python
- Условные выражения в Python
- Отправка HTTP-запросов с User-Agent
- Функции map, filter, reduce
- Создание вкладок с TKinter
- Ускорение кода с помощью векторизации
- Python 3.12: переиспользование кавычек
- Объединение строк с помощью метода join
- Просмотр атрибутов и методов класса















