Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Декораторы

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Декораторы в языке Python

Перед прочтением данной статьи рекомендую прочесть следующую

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

И так у нас есть простая функция func2() (см. ниже). Сконструируем для нее декоратор - функция func1() с вложенной функцией fnc2(). Да, вложенные функции используются не так часто, ну вот как раз при конструировании декораторов.

Текст программы см. ниже
Текст программы см. ниже
primer189.py

Результат выполнения программы

Код перед выполнением функции
Функция func2
Код после выполнения функции

Если у декорируемой функции есть параметры, то все решается довольно просто.

Пример программы см. ниже
Пример программы см. ниже
primer190.py

Результат выполнения программы

Код перед выполнением функции
Функция func2, с декоратором
Код после выполнения функции

Рассмотрим теперь как проблема решается с помощью декоратора

Текст программы см. ниже
Текст программы см. ниже
primer191.py

Или декоратор для функции с параметром

Текст программы см. ниже
Текст программы см. ниже
primer192.py

вот теперь самое интересное. Вложенные декораторы

Текст программы см. ниже
Текст программы см. ниже
primer193.py

Результат выполнения программы

Код перед выполнением функции 2
Код перед выполнением функции
Функция func2, с декоратором
Код после выполнения функции
Код после выполнения функции 2

Понятно, что функцию можно задекорировать так, что она совсем не будет вызываться. Но это уже зависит от того, что требуется для решения конкретной задачи.

Ну что же, про декораторы пока всё.

Об использовании декораторов см.

и здесь

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

Кто вы, я не узнаю вас в гриме
Кто вы, я не узнаю вас в гриме