Курс 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. Создание списков в Python
  2. Объединение словарей в Python
  3. Преобразование числа в список цифр
  4. Проверка на палиндром
  5. Вычисление натуральных логарифмов в NumPy
  6. Работа со стеком в Python
  7. Метод split() в Python
  8. Разделение списка на гнппы
  9. Проектирование Singleton с метаклассом
  10. Настройка вывода в Numpy
  11. Транспонирование матрицы в Python
  12. Копирование объектов в Python
  13. Метод __irshift__ для побитового сдвига вправо
  14. Глубокое копирование объектов
  15. Метод __call__ в Python
  16. Атрибуты массивов в Numpy
  17. Простой калькулятор Python
  18. Переменная Шредингера
  19. Сортировка и обратный порядок
  20. Применение функций в Python
  21. Отображение графиков в Jupyter с Matplotlib
  22. Константы в модуле cmath
  23. Pretty-printing JSON в Python
  24. Декоратор проверки активности
  25. Иерархия классов в Python
  26. Удаление и повторная вставка ключа в OrderedDict
  27. Python reversed() vs срез[::-1]
  28. Список переменных в Python
  29. Сортировка элементов с OrderedDict
  30. Реверс строки в Python
  31. Метод get для словарей
  32. Создание множества в Python
  33. Вычисление логарифмов в Python
  34. Метод lt для сортировки объектов
  35. Декораторы в Python
  36. Работа с утверждениями в Python
  37. ChainMap избыточные ключи
  38. Логирование с Loguru
  39. Моржовый оператор в Python 3.8
  40. Разделение строки с помощью re.split()
  41. Оптимизация памяти с помощью __slots__
  42. Именованные аргументы в Python
  43. Howdoi — получение ответов из терминала
  44. Определение наиболее частого элемента с помощью collections.Counter
  45. Работа с очередями в Python
  46. Преобразование списка в словарь через генератор

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