Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Использование декораторов на примере 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

1
181.357 GOLOS
На Golos с August 2017
Комментарии (3)
Сортировать по:
Сначала старые