Курс 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. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  2. Преобразование Word в PDF с Spire.Doc
  3. Управление асинхронными задачами с помощью Semaphore
  4. Анализ текста на русском языке с помощью Pymystem3
  5. Проверка ввода с помощью isdigit
  6. Библиотека sh: использование команд bash в Python
  7. Работа с deque из collections
  8. Методы __repr__ и __str__ в Python
  9. Метод lt для сортировки объектов
  10. Генераторы по генератору
  11. Уникальные значения из списка
  12. Создание графиков в терминале
  13. Подписка на каналы разработчиков
  14. Функция с *args.
  15. Операции со строками в Python
  16. Работа с парами ключ-значение
  17. Отрицательные индексы списков в Python
  18. Обработка исключений в Python 3
  19. Декоратор Property в Python
  20. Вывод переменной и строки в Python
  21. Python: Фильтрация списков с помощью filter()
  22. Объединение словарей в Python
  23. Установка библиотек в Python
  24. Управление виртуальными средами в Python
  25. Создание виртуальной среды
  26. Обработка аргументов Python
  27. Использование подчеркивания в REPL
  28. Мониторинг работы программы Py-spy
  29. Работа с изменяемыми коллекциями
  30. Подчеркивание в REPL
  31. Модуль xkcd: добавление юмора в Python
  32. Искажение имен в Python
  33. Работа с утверждениями в Python
  34. Непрерывная проверка в Python
  35. Подписка на @SelectelNews
  36. Основы работы со списками
  37. Наиболее частотные элементы с помощью Counter
  38. Создание OrderedDict
  39. Метод bool() в Python
  40. Измерение времени выполнения в Python
  41. Применение функции к каждому элементу списка
  42. Загрузка постов Instagram
  43. Операции с кортежами
  44. Метод join() для объединения строк
  45. capitalize() — изменение регистра первого символа строки
  46. Изменение объектов в Python

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