Курс 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. Операторы увеличения и уменьшения переменной
  3. JMESPath в Python
  4. Работа с изображениями Pillow
  5. Работа с GitHub в Telegram
  6. Курсы Яндекс Практикум
  7. Преобразование генераторов в циклы
  8. Манипуляция формой массива в Numpy
  9. Перегрузка операторов в Python
  10. Символ подчеркивания в Python
  11. Поиск индексов подстроки
  12. Создание панели меню Tkinter
  13. Создание виртуальной среды
  14. Атрибуты массивов в Numpy
  15. Декораторы в Python
  16. Шаблоны и наследование в Flask
  17. Работа с Telegram API на Python
  18. Метод округления чисел
  19. Введение в Python
  20. Структурирование именованных констант
  21. Округление дробей в Python
  22. Метод invert для побитового отрицания
  23. Объединение списков в строку
  24. Работа с Path в Python
  25. *args и **kwargs в Python
  26. Работа с collections в Python
  27. Создание копии списка в Python
  28. Измерение времени выполнения кода с использованием time
  29. Пересечение списков с использованием множеств
  30. Получение ID процесса
  31. Генераторы в Python
  32. Сравнение объектов в Python
  33. Удаление дубликатов из списка с помощью dict.fromkeys
  34. Вывод баннеров
  35. Многопоточность и асинхронное программирование в Python
  36. Логирование с Loguru
  37. Избегайте пустого списка
  38. Блок else в обработке исключений
  39. Сравнение def и lambda функций в Python
  40. Библиотека wikipedia для Python
  41. Оператор == в Python
  42. Функция enumerate в Python
  43. Метод __iand__ для пользовательских классов
  44. Python Enumerate
  45. Методы обработки строк в Python
  46. Метод init в Python
  47. Создание копии итератора
  48. Lambda Functions in Python

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