Курс 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"
- Функция zip() — объединение последовательностей
- Работа с Colorama
- Защита данных в Python
- История Python
- Распаковка значений в Python
- Именование столбцов в Python с pandas
- Создание спинбокса в tkinter
- Функция all() в Python
- Чтение и запись TOML-конфигов
- Автоматизация действий с Pyautogui
- Создание графиков в терминале
- Итерация по итерируемым объектам
- Работа с пользовательским вводом
- Методы в Python
- Манипуляция формой массива в Numpy
- Операторы присваивания в Python
- Нан-рефлексивность в Python
- Функция reduce() в Python
- Метод __imod__ для Python
- Метод rmatmul для пользовательских матриц
- Удаление дубликатов из списка
- Перемещение и удаление файлов в Python
- Проверка подстроки в строке
- Копирование словарей и списков в Python
- Перевод эмодзи и эмотиконов.
- Упрощение условных выражений с тернарным оператором
- Фильтрация элементов с помощью islice
- Участие в LP стейкинге Waves
- Работа с deque из collections
- Множественное наследование в Python
- Экспорт внешнего файла с помощью writefile
- Списки в Python: основы
- Поиск элементов BeautifulSoup
- Представление бесконечности в Python
- Абстракции словарей и множеств в Python
- Декораторы в Python
- Лямбда-функции в цикле
- Обработка ошибок ввода данных
- Создание инструмента обнаружения плагиата
- Передача словаря через **kwargs
- Округление банкира в Python
- Удаление специальных символов
- Python Метод sleep() времени
- Освоение Python
- Шаблоны Flask: условия и циклы
- Комментарии в Python.
- Объединение, распаковка и деструктуризация















