Курс 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. Удаление символа из строки
  2. Проверка переменных окружения в Python
  3. Работа с контекстным менеджером Pool
  4. Создание новой даты в Python
  5. Итераторы в Python
  6. Обработка исключений с блоком else
  7. Запуск файлового сервера
  8. Изменение объектов в Python
  9. Генерация случайных данных в NumPy
  10. Переопределение метода sub
  11. Проверка дубликатов в Python
  12. Извлечение новостей с newspaper3k
  13. Функция zip() в Python
  14. Деление в Python
  15. Атрибуты класса и экземпляра
  16. Распаковка аргументов в Python
  17. Параллельные вычисления в Python
  18. UserString в Python
  19. Тестирование модели в PyTorch
  20. Импорт объектов из модулей
  21. Генераторы в Python
  22. Использование super() в Python
  23. Проблемы с dict в Python
  24. Лямбда-функции в Python
  25. Оптимизация методов в Python 3.7
  26. Обработка исключений в Python 3
  27. Создание коллекций из генератора
  28. Статическая типизация в Python
  29. Оболочка Python
  30. Проверка наличия элемента в списке
  31. Повторение элементов в Python
  32. Обратный список чисел
  33. Решение переменной Шредингера
  34. Функция zip() в Python
  35. Оптимизация памяти в Python
  36. Операторы увеличения и уменьшения в Python
  37. Комментарии в Python
  38. Реализация метода __abs__ в Python
  39. Функции map() и reduce() в Python
  40. Проверка списка: any() и all()
  41. Метод count() для списка
  42. Динамические маршруты во Flask
  43. Возвращение нескольких значений
  44. Именованные аргументы в Python

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