Курс 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
  2. Big O оптимизация
  3. Создание списков в Python
  4. Подчеркивание в REPL
  5. Измерение времени выполнения кода
  6. Работа с путями в Python
  7. Декораторы в Python
  8. Замена текста с помощью sub
  9. Генераторы списков в Python
  10. Генераторы в Python
  11. Подробная информация о %pinfo
  12. Ограничение итераций в Python
  13. Обработка элементов в Python
  14. Отображение графиков в Jupyter с Matplotlib
  15. Работа с файлами в Python
  16. Пустой оператор pass в Python
  17. Concrete Paths — метод .with_suffix()
  18. Использование html-скриптов в Jupyter Notebook
  19. Функции all и any в Python
  20. discard() — удаление элемента из множества
  21. Управление ресурсами с контекстными менеджерами
  22. Тип CodeType в Python.
  23. Список переменных с %who
  24. Очистка списка от False, None, 0, «»
  25. Список методов и атрибутов
  26. Склеивание строк без циклов
  27. Выбор редактора кода.
  28. Управление контекстом выполнения кода
  29. Генераторы в Python
  30. Итерации в Python
  31. Dict Comprehension в Python
  32. Освоение Python
  33. Сериализация данных в JSON с помощью json.dumps
  34. Работа с очередями в Python
  35. Извлечение новостей с newspaper3k
  36. Упрощенный вывод данных в Python
  37. Объединение кортежей в Python
  38. Создание инструмента обнаружения плагиата
  39. Создание и использование модулей в Python
  40. Списковое включение в Python
  41. Выход из профиля в Django
  42. Получение локальных переменных в Python
  43. Генераторы в Python
  44. Работа с NumPy массивами
  45. Форматирование заголовков в Python
  46. Удаление ресурса в Python
  47. Работа с пакетами

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