Курс 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. Эффективная конкатенация строк с использованием join()
  2. Запрос пароля с помощью getpass
  3. Класс UserDict: дополнительная функциональность
  4. Отладка производительности Python
  5. Работа с timedelta в Python
  6. Работа с временем в Python
  7. Создание инструмента обнаружения плагиата
  8. Измерение времени выполнения кода в Python
  9. Многострочные комментарии в Python
  10. Обязательные аргументы в Python
  11. Строковое представление объектов
  12. Работа с кортежами
  13. Профилирование с Pandas
  14. Объединение словарей в Python
  15. Класс-оболочка для словарей
  16. Работа с географическими данными.
  17. Принцип одной функции
  18. Создание списков в Python
  19. Работа с YAML в Python
  20. Нарезка списков в Python
  21. Операторы увеличения и уменьшения в Python
  22. Инициализация структур данных
  23. Оператор «моржа» (Walrus Operator)
  24. Регистрация на хакатоне
  25. Вычисление натуральных логарифмов в NumPy
  26. Функциональное программирование в Python
  27. Работа с zip-архивами в Python
  28. Множественные конструкторы в Python
  29. Тестирование функции сложения
  30. Удаление элемента из списка
  31. Управление ресурсами с контекстными менеджерами
  32. Monkey Patching в Python
  33. Удаление ключа из словаря в Python
  34. Удаление дубликатов из списка
  35. Установка и использование библиотеки google
  36. Игра Виселица на Python
  37. Блок else в циклах.
  38. Методы __repr__ и __str__ в Python
  39. Модуль itertools: комбинации и перестановки
  40. Нахождение хеша для бесконечности и NaN в Python
  41. Генераторы списков в Python
  42. Удаление элемента по индексу в Python
  43. Основы работы со списками
  44. Flask — веб-фреймворк Python
  45. Вывод переменной и строки в Python

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