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


В этой статье рассмотрим декораторы в python.

Что такое декораторы? Декораторы - некая обвертка функции, позволяющая изменить поведение функции.

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

Теория теорией, но давайте реализуем это в коде. Это позволит составить полную картину.

Для начала создадим функцию-декоратор.

def decor_art(method):
    def wrap():
        print('Обвертка. Начало')
        method()
        print('Обвертка. Конец')
    return wrap

Как видим, функция принимает другую функцию/метод, создается функция обвертка, в которой реализуется сама обвертка и вызывается функция.

Теперь реализуем тестовый метод:

@decor_art
def test():
    print('Сама функция')

Чтобы запусти функцию с декоратором - вызывать нужно только функцию.
Результат видим, на скриншоте.
Imgur

Как видим, все просто.

Где и когда декораторы могут использоваться?

Декораторы просто необходимы там, где код может использоваться часто, например счетчики.

А теперь поработаем над декораторами с аргументами. Для этого изменим вышереализуемый код:

def decor_art(method):
    def wrap(arg1):
        print('Обвертка. Начало')
        method(arg1)
        print('Обвертка. Конец')
    return wrap
    
@decor_art
def test(t):
    print('Сама функция '+t)

Результат, ниже на скрине.
Imgur

Листинг кода с декоратором

Листинг кода с декоратором и аргументом

Материал подготовлен автором @zheev

vox-populiпрограммированиеpythonразработка
233
181.357 GOLOS
0
В избранное
Web Development
Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает тех программистов, которые презирают тех, кто их презирает.
233
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (3)
Сортировать по:
Сначала старые