Курс Python → Декораторы в Python

Декораторы в Python представляют собой специальный синтаксис, который позволяет нам изменять поведение функций или методов без изменения их исходного кода. Для написания собственного декоратора в Python, нам нужно определить функцию, которая будет являться декоратором, и применить ее к целевой функции с помощью символа @.


def my_decorator(func):
    def wrapper():
        print("Before function is called")
        func()
        print("After function is called")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

В данном примере мы создали декоратор my_decorator, который выводит сообщения до и после вызова целевой функции say_hello. При использовании декоратора @my_decorator перед определением функции say_hello, мы расширили функциональность функции say_hello без изменения ее кода.

Декораторы могут принимать аргументы, что позволяет нам настраивать их поведение. Для передачи аргументов в декоратор, мы можем определить еще одну внутреннюю функцию, которая будет принимать эти аргументы и передавать их внутреннему декоратору.


def my_decorator_with_args(arg1, arg2):
    def decorator(func):
        def wrapper():
            print(f"Arguments passed to decorator: {arg1}, {arg2}")
            func()
        return wrapper
    return decorator

@my_decorator_with_args("arg1_value", "arg2_value")
def say_hello():
    print("Hello!")

say_hello()

В этом примере мы создали декоратор my_decorator_with_args, который принимает два аргумента и передает их внутреннему декоратору, который затем выводит их значения перед вызовом целевой функции say_hello. Таким образом, мы можем настраивать поведение декораторов в зависимости от переданных аргументов.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Капитализация строк
  2. Измерение времени выполнения кода
  3. Переопределение метода sub
  4. Переопределение метода __or__()
  5. Сравнение объектов в Python
  6. Создание OrderedDict
  7. Установка Home Assistant
  8. Принципы Zen Python
  9. Создание и использование модулей в Python
  10. Обязательные аргументы в Python
  11. Расширение информации об ошибке в Python
  12. Поиск подстроки в строке
  13. Проверка на палиндром
  14. Форматирование строк в Python
  15. Defaultdict в Python
  16. Встраивание HTML в Jupyter Notebook
  17. Типы возвращаемых значений в Python
  18. Уникальность ключей в словаре
  19. Обновление множества в Python
  20. Приоритет операций в Python
  21. Дефолтные параметры в Python
  22. Разрешение имен в Python
  23. Enum в Python
  24. Метод join() для объединения элементов строки
  25. Функции в Python
  26. Создание обратного итератора
  27. Обработка элементов в Python
  28. Методы __repr__ и __str__ в Python
  29. Область видимости переменных
  30. Установка и использование Logzero
  31. Разность множеств
  32. Метод rename() для переименования файлов и каталогов
  33. Именование переменных в Python
  34. Цикл for в Python
  35. Измерение потребления памяти при сортировке
  36. Импорт классов из другого файла
  37. Расчет времени выполнения программы
  38. Работа с комплексными числами в Python
  39. Просмотр внешних файлов в %pycat
  40. Создание треугольника Паскаля
  41. Отправка POST запроса на сервер.
  42. Декоратор для группы пользователей в Django
  43. Метод get() в Python

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