Курс 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. Сортировка списка по индексам
  4. Декораторы в Python
  5. Изменение переменной в Python: nonlocal
  6. Динамические маршруты во Flask
  7. Создание объекта времени
  8. Открытие и запись файлов
  9. Переопределение унарных операторов
  10. Преобразование списков в словарь
  11. Удаление элементов из списка
  12. Раздувающийся словарь в Python
  13. Условное добавление элементов в список
  14. Просмотр атрибутов и методов класса
  15. Упрощенный вывод данных в Python
  16. Списковое включение в Python
  17. IPython и Jupyter Notebook: руководство
  18. Создание копии итератора
  19. Реверс строки и списка в Python.
  20. Именованные срезы в Python
  21. Получение текущего времени в Python
  22. Функция map() и ленивая оценка
  23. Декораторы в Python
  24. Создание новых списков через list comprehensions
  25. Копирование и вставка текста в Python
  26. Использование метода lower()
  27. Метод rsub для пользовательских чисел
  28. Тест скорости набора текста на Python
  29. Обновление шаблона base.html
  30. Список переменных в Python
  31. Роль object и type в Python
  32. Метод enumerate() в Python
  33. Изменение IP-адреса в Python
  34. List Comprehension Tutorial
  35. Установка и использование TensorFlow
  36. Вывод с переменной через запятую
  37. Оценка точности модели
  38. Управление экспортом элементов
  39. Работа с базами данных SQLite
  40. Функция all() в Python
  41. Отслеживание прогресса с tqdm
  42. Работа с парами ключ-значение
  43. Блок else в Python
  44. Получение списка кортежей из словаря
  45. Работа с классами данных
  46. Группы исключений в Python

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