Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
10 Сен 2024
2 мин
212

Создание и объединение декораторов в Python

Декораторы в Python представляют собой мощный инструмент, позволяющий изменить поведение функции или метода без изменения его исходного кода. Основная

Декораторы в Python представляют собой мощный инструмент, позволяющий изменить поведение функции или метода без изменения его исходного кода. Основная задача декораторов – это добавление новых функциональностей к существующим объектам без модификации их структуры.

Пример использования декораторов

Рассмотрим пример, где используется декоратор для подсчета времени выполнения функции.

import time

def timer_decorator(function):
    def wrapper():
        start_time = time.time()
        function()
        end_time = time.time()
        print(f"Время выполнения функции: {end_time-start_time} секунд")
    return wrapper

@timer_decorator
def some_function():
    time.sleep(2)

some_function()

В данном примере создан декоратор timer_decorator, который замеряет время выполнения функции. Функция some_function декорирована этим декоратором, что позволяет замерить ее время выполнения без изменения исходного кода функции.

Создание декораторов

Создание декоратора включает в себя определение функции, которая принимает другую функцию в качестве аргумента. Внутри этой функции определяется вложенная функция (часто называемая «оберткой» или «wrapper»), которая содержит код, который будет выполняться до и после вызова переданной функции.

def decorator(function):
    def wrapper():
        print("Код перед вызовом функции")
        function()
        print("Код после вызова функции")
    return wrapper

Объединение декораторов

Декораторы могут быть объединены для создания сложного поведения. Это достигается путем применения нескольких декораторов к одной функции. Порядок применения декораторов важен: декоратор, который указан первым, будет применен последним.

@decorator1
@decorator2
def function():
    pass

В этом примере сначала к функции применяется decorator2, затем результат оборачивается decorator1.

Подводя итог, можно сказать, что Python предлагает мощные возможности для модификации поведения функций и методов с помощью декораторов. Это позволяет добавлять функциональность к существующим объектам без изменения их структуры, что делает код более чистым и понятным.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий