Использование декораторов на примере Python
В этой статье рассмотрим декораторы в python.
Что такое декораторы? Декораторы - некая обвертка функции, позволяющая изменить поведение функции.
Функции в Python являются объектами и их можно передать как аргумент других функций, что позволяет использовать декораторы.
Теория теорией, но давайте реализуем это в коде. Это позволит составить полную картину.
Для начала создадим функцию-декоратор.
def decor_art(method):
def wrap():
print('Обвертка. Начало')
method()
print('Обвертка. Конец')
return wrap
Как видим, функция принимает другую функцию/метод, создается функция обвертка, в которой реализуется сама обвертка и вызывается функция.
Теперь реализуем тестовый метод:
@decor_art
def test():
print('Сама функция')
Чтобы запусти функцию с декоратором - вызывать нужно только функцию.
Результат видим, на скриншоте.
Как видим, все просто.
Где и когда декораторы могут использоваться?
Декораторы просто необходимы там, где код может использоваться часто, например счетчики.
А теперь поработаем над декораторами с аргументами. Для этого изменим вышереализуемый код:
def decor_art(method):
def wrap(arg1):
print('Обвертка. Начало')
method(arg1)
print('Обвертка. Конец')
return wrap
@decor_art
def test(t):
print('Сама функция '+t)
Результат, ниже на скрине.
Листинг кода с декоратором и аргументом
Материал подготовлен автором @zheev