Рассмотрим в статье теоретическое и практическое применение декораторов в Python.
Введение
В большинстве случаев люди, занимающиеся программированием в Python, либо никогда не сталкивались с декораторами, либо если и сталкивались, то не могли их понять. В этой статье рассмотрим этот не очень изученный вопрос.
Прежде чем перейти дальше к основной теме, давайте рассмотрим основные моменты.
Объект первого класса
В Python функции являются объектами первого класса:
- Они могут храниться как переменные
- Они могут быть переданы в качестве аргумента внутри функции
- Они могут быть возвращены из функций в виде значений
- Они действуют точно так же, как переменные
Функции высшего порядка
Функции высшего порядка — это функции, которые:
- Принимают другую функцию в качестве аргумента.
- Возвращают другую функцию.
Как раз декораторы используют эти функции.
Что такое декораторы?
Простыми словами, декораторы — это то, что украшает нашу функцию.
Декораторы прекрасно заряжают функцию и добавляют к ней дополнительную функциональность. Это та функция, которая обертывает другую функцию и усиливает ее или модифицирует.
Алгоритм действий в программировании
Теперь пришло время создать своего собственного декоратора:
def new_decorator(func):
def wrapper(*args, **kwargs):
print("-")
func(*args, **kwargs)
print("*")
return wrapper
@new_decorator
def hello(greeting, msg):
print(greeting, msg)
hello(
"Привет ребята",
"Добро пожаловать",
)Вывод программы:
- Привет ребята Добро пожаловать *
Пошаговое объяснение:
- new_decorator — это функция, содержащая функцию-оболочку.
- wrapper — это функция, которая обертывает в оболочку функцию. Она также добавляет некоторые характеристики к этой функции.
- new_decorator — это фактическая функция, которую мы хотим улучшить.
- Добавляя @ перед функцией, прикрепляем фактическую функцию к декоратору. Здесь @new_decorator — это имя функции декоратора.
Пример использования декоратора
После изучения приведенного выше примера вы можете задаться вопросом, в чем на самом деле заключается потребность этого декоратора или где мы можем его использовать.
Декораторы могут быть использованы для проверки подлинности пользователя перед выполнением задачи, для расчета времени процесса, создания исключений, отладки кода, замедления кода и многого другого.
Давайте посмотрим пример, где я хочу вычислить время, затраченное функцией:
from time import time
def perf(func):
def wrapper(*args, **kwargs):
t1 = time()
result = func(*args, **kwargs)
t2 = time()
print(f"Затраченное время {t2-t1} сек")
return result
return wrapper
@perf
def run():
for i in range(100000000):
i * 6
run()Вывод программы:
Затраченное время 9.065523862838745 сек
Здесь декоратор вычисляет время до и после выполнения функции. Затем он вычисляет разницу этого времени. Отсюда и отдача затраченного времени.
Несколько декораторов могут быть использованы для одной функции. Они выполняются снизу вверх. Один декоратор также может быть использован для нескольких функций.
Заключение
Сегодня мы рассмотрели, как использовать декораторы, как их создавать и для чего они используются. Надеюсь статья была легкой в усвоении, а если нет — пишите ваши вопросы в комментариях 🙂





![[Решение] Как избежать ошибки UnboundLocalError](https://egorovegor.ru/wp-content/uploads/5b77c575d7-335x220.webp)




Инженеры составляют график замеров, журнал проведения исследований, выдают акт выполнения работ https://osnovanie-svai.com/pile.php
В акте отражают все показания контрольных приборов, изменения сопротивления грунта, выводы о пригодности грунта для дальнейшего строительства https://osnovanie-svai.com/
Нагружение свай производят с помощью грузовой платформы и тарированных грузов либо с помощью системы балок и анкерных свай, воспринимающих выдергивающее усилие https://osnovanie-svai.com/pile.php
до 1% от общего количества свай, для КС2 минимум 3 исп., для КС3 минимум 4 исп https://www.osnovanie-svai.com/politica.html
Предварительные испытания грунтов вдавливанием — обязательные исследования для подтверждения устойчивости основания конструкции, с помощью которых инженеры детально оценивают стоимость установки фундамента и рассчитывают нагрузки https://osnovanie-svai.com/
При испытаниях буровыми (буронабивными, буроинъекционными и т https://www.osnovanie-svai.com/politica.html
д.) и набивными сваями начало испытаний назначают не ранее достижения бетоном свай 80 % проектной прочности https://osnovanie-svai.com/
Алгоритм проведения динамических испытаний рассмотрен в СП 24 https://osnovanie-svai.com/
13330 https://osnovanie-svai.com/
2011 «Свайные фундаменты» https://osnovanie-svai.com/
Высокое качество https://print-classic.ru/blank
Срочная печать в день обращения https://print-classic.ru/figures
После всех изменений, написать нам https://print-classic.ru/polzovatelskoe-soglashenie
Печать на баннере https://print-classic.ru/otzyvy
Информацию о способах и стоимости доставки по Москве и Московской области вы можете получить в разделе Доставка и оплата https://print-classic.ru/xlbanner
Красочные и четкие изображения большого формата могут получиться только при соблюдении нескольких условий:
От 30000 рублей https://rentbusspb.ru/микроавтобус-mercedes-sprinter-vip/
Год выпуска:
Порядок аренды https://rentbusspb.ru/mercedes-benz-gl-63-амг/
Машин в автопарке:
Клуб проката автомобилей «CARS&GO» — компания, которая с 2015 года оказывает широкий комплекс услуг, начиная от предоставления авто в аренду и заканчивая инвестиционным управлением https://rentbusspb.ru/category/arenda-minivena/
Наш автопарк насчитывает 400 автомобилей, которые поделены на классы — Эконом, Средний, Бизнес и Премиум, что позволяет удовлетворять запросы любого клиента https://rentbusspb.ru/mercedes-benz-sprinter-2018/
г https://rentbusspb.ru/mercedes-benz-gl-63-амг/
Иркутск, ул https://rentbusspb.ru/arenda-mercedes-s-class-w223-s-voditelem/
Сухэ-Батора, 7 https://rentbusspb.ru/arenda-minivena-mercedes-vito-new-s-voditelem/
https://bizzocasinosi.com/
Уникальное предложение для вашего бизнеса!
Ищете быстрые и недорогие решения для продвижения? Мы предлагаем прогоны с помощью Хрумера и ГСА по собственным уникальным базам!
Почему выбирают нас?
— Доступные цены без скрытых платежей
— Мгновенные результаты — ваш сайт начнет получать трафик уже сегодня!
— Уникальные базы, которые обеспечивают максимальную эффективность
— Индивидуальный подход к каждому клиенту
Не упустите шанс повысить видимость своего сайта и привлечь новых клиентов! Обращайтесь к нам и получите бесплатную консультацию.
Свяжитесь с нами прямо сейчас и узнайте, как мы можем помочь вашему бизнесу вырасти! узнайте все подробности можно ====>>> ЗДЕСЬ
Очень отличная и интересная тема, я думаю, что Python требует большого ума, спасибо, что разместили тему
пожалуйста!