Курс 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
- Строковое представление объектов
- Создание обратного итератора
- Разработка Telegram-ботов
- Логирование в Python
- Основные операции с библиотекой Numpy
- Реверс строки в Python
- Искажение имен в Python
- Объединение списков в Python
- Создание таблиц в Python с PrettyTable
- Работа со строками
- Работа с коллекциями Python
- Сортировка в Python
- Переопределение метода __and__
- Изменение логики работы с временем
- 9 уловок для чистого кода
- Проблемы с dict в Python
- Многострочные строки в Python
- Подчеркивание в REPL
- Скрытие вывода данных
- Проверка типа объекта в Python
- Оптимизация интернирования строк
- Принципы SRP и OCP
- Использование html-скриптов в Jupyter Notebook
- Создание копии итератора
- Расширение информации об ошибке в Python
- Очистка данных с Pandas
- Работа с файлами в Python
- Регистрация на курсы SF Education
- Работа с геоданными с помощью geopy
- Python: отсутствие точек с запятыми
- Многоточие в Python
- Объединение, распаковка и деструктуризация
- Работа с исключениями в Python
- Проверка наличия элемента в списке
- Поиск частого элемента
- Сложные типы данных в Python
- Перевод эмодзи и эмотиконов.
- CLI-инструмент howdoi
- Путь к интерпретатору Python
- Форматирование строк в Python
- Абстракции словарей и множеств в Python
- Тестирование модели в PyTorch
- Возведение в квадрат с помощью itertools
- Декораторы в Python
- Перехват исключений в Python
- Объявление переменных в Python
- Удаление специальных символов
- Enum в Python: создание и использование перечислений















