Курс 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. Dict Comprehension в Python
  2. Метод __ixor__ для побитового исключающего ИЛИ
  3. Любовь к Python
  4. Форматирование строк в Python
  5. Поиск HTML-элементов с BeautifulSoup
  6. Defaultdict в Python
  7. Обновление данных через PUT запрос
  8. Вакансии в Nebius
  9. Декораторы с @wraps
  10. Создание виртуальной среды
  11. Замена элементов в списке с помощью генераторов списков
  12. Метод difference_update() — разность множеств
  13. Работа с каталогами в Python
  14. Подсчет элементов в Python
  15. Обработка ошибок в Python
  16. Solidity для DeFi Ethereum
  17. Преобразование текста в речь с Python
  18. Поиск всех индексов подстроки
  19. Сортировка слиянием
  20. Создание объекта timedelta
  21. Декораторы в Python
  22. Тест скорости набора текста на Python
  23. Тестирование функции сложения
  24. Инициализация объекта
  25. Работа с комплексными числами
  26. Метод __iand__ для пользовательских классов
  27. Оператор Walrus в Python
  28. Python enumerate() использование
  29. Оператор «or» в Python
  30. Переопределение метода divmod
  31. Передача неизвестных аргументов в Python.
  32. Объединение объектов в Python
  33. Метод rsub для пользовательских чисел
  34. Обработка ошибок в Python
  35. Оператор «and» в Python
  36. Объединение словарей в Python
  37. Встраивание HTML в Jupyter Notebook
  38. Быстрый поиск кода
  39. Функции в Python
  40. Метод bool() в Python
  41. Работа со словарями с defaultdict из collections
  42. Оператор * в Python
  43. Работа с очередями в Python
  44. Оператор in и not in в Python
  45. Метод rlshift для битового сдвига
  46. Работа со временем в Python

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