Курс 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
- Преобразование числа в список цифр
- Проверка на палиндром
- Вычисление натуральных логарифмов в NumPy
- Работа со стеком в Python
- Метод split() в Python
- Разделение списка на гнппы
- Проектирование Singleton с метаклассом
- Настройка вывода в Numpy
- Транспонирование матрицы в Python
- Копирование объектов в Python
- Метод __irshift__ для побитового сдвига вправо
- Глубокое копирование объектов
- Метод __call__ в Python
- Атрибуты массивов в Numpy
- Простой калькулятор Python
- Переменная Шредингера
- Сортировка и обратный порядок
- Применение функций в Python
- Отображение графиков в Jupyter с Matplotlib
- Константы в модуле cmath
- Pretty-printing JSON в Python
- Декоратор проверки активности
- Иерархия классов в Python
- Удаление и повторная вставка ключа в OrderedDict
- Python reversed() vs срез[::-1]
- Список переменных в Python
- Сортировка элементов с OrderedDict
- Реверс строки в Python
- Метод get для словарей
- Создание множества в Python
- Вычисление логарифмов в Python
- Метод lt для сортировки объектов
- Декораторы в Python
- Работа с утверждениями в Python
- ChainMap избыточные ключи
- Логирование с Loguru
- Моржовый оператор в Python 3.8
- Разделение строки с помощью re.split()
- Оптимизация памяти с помощью __slots__
- Именованные аргументы в Python
- Howdoi — получение ответов из терминала
- Определение наиболее частого элемента с помощью collections.Counter
- Работа с очередями в Python
- Преобразование списка в словарь через генератор















