Курс Python → Декоратор проверки активности

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

Для примера, давайте рассмотрим ситуацию, когда пользователь должен иметь определенное количество очков активности, чтобы иметь возможность оставить отзыв на блоге или в магазине. Мы можем использовать декоратор для проверки этого условия перед выполнением функции написания отзыва. Если у пользователя не хватает активности, мы можем предотвратить выполнение функции и выдать соответствующее сообщение.


def check_activity(func):
    def wrapper(user_activity):
        if user_activity >= 10:
            return func(user_activity)
        else:
            return "У вас недостаточно активности для написания отзыва."
    return wrapper

@check_activity
def write_review(user_activity):
    return "Отзыв успешно оставлен."

user_activity = 12
print(write_review(user_activity))  # Отзыв успешно оставлен.

user_activity = 8
print(write_review(user_activity))  # У вас недостаточно активности для написания отзыва.

В данном примере мы создали декоратор check_activity, который проверяет, что пользователь имеет более 10 баллов активности перед выполнением функции write_review. Если условие не выполняется, выводится соответствующее сообщение. При передаче значения активности 12 функция успешно выполняется, а при передаче значения 8 она не выполняется.

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Утечки переменных цикла в Python 3.x
  2. Python Calendar Usage
  3. Ввод нескольких значений
  4. Измерение времени выполнения кода
  5. Игра «Виселица» на Python
  6. Комментарии в Python
  7. Группировка элементов Python
  8. Отправка POST-запроса в REST API
  9. Python enumerate() использование
  10. Преобразование многоуровневого словаря
  11. Работа с изменяемыми списками
  12. Логирование с Loguru
  13. Управление виртуальными окружениями в Python
  14. Новшества Flask 2.0
  15. Оператор zip в Python
  16. Лямбда-функции в Python
  17. Метод join() для объединения элементов в строку.
  18. Построение графиков в Matplotlib
  19. Проверка элемента в множестве.
  20. Работа с модулем bisect
  21. Блок try…finally в Python
  22. Оформление текста в консоли с TermColor
  23. Возврат значений из генератора
  24. Декораторы в Python
  25. Именованные срезы в Python
  26. Работа с модулем cmath
  27. Работа с deque в Python
  28. Основы работы со списками
  29. Получение частей дроби
  30. Очистка списка от False, None, 0, «»
  31. Решение переменной Шредингера
  32. Функции range() в Python
  33. Генераторы в Python
  34. Создание словарей и множеств в Python.
  35. Разделение строки на подстроки в Python
  36. Модуль pprint: улучшение вывода данных
  37. Объединение словарей в Python
  38. HTTP-запросы с библиотекой Requests
  39. Чтение и запись TOML-конфигов
  40. Параллельные вычисления в Python
  41. Объединение списков с использованием itertools.chain
  42. Получение пути к текущему скрипту с помощью os
  43. Класс UserDict: дополнительная функциональность
  44. Установка и использование Virtualenv
  45. Работа с срезами в Python
  46. Измерение времени выполнения кода
  47. Обязательные аргументы в Python

Marketello читают маркетологи из крутых компаний