Курс 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. Работа со словарями в Python
  4. Отступы в Python
  5. Сортировка списка по индексам
  6. Сравнение def и lambda функций в Python
  7. Фильтрация списков с itertools
  8. Вложенные генераторы в Python
  9. Удаление символа из строки
  10. Изменение переменной в Python: nonlocal
  11. Показ всплывающих окон Tkinter
  12. Взаимодействие с sys
  13. Библиотека sh: использование команд bash в Python
  14. Метод add для класса Vector
  15. Создание виртуальной среды
  16. Counter() — подсчет элементов
  17. Генерация UUID в Python
  18. Переопределение метода len
  19. Методы __repr__ и __str__ в Python
  20. Объединение списков в строку
  21. Частичное совпадение ввода
  22. Метод radd для пользовательских чисел
  23. Объединение строк с помощью метода join
  24. Конкатенация строк с помощью join()
  25. Работа с изменяемыми списками
  26. Генерация случайных чисел Python
  27. Поиск HTML-элементов с BeautifulSoup
  28. Создание генераторов в Python
  29. Метод matmul для умножения матриц
  30. Создание даты из строки ISO
  31. Генерация случайных чисел в Python
  32. Логирование с Logzero
  33. Обход словаря в Python
  34. Применение функции к элементам списка
  35. Цикл for в Python
  36. Поиск email
  37. Глобальные переменные в Python
  38. Группы исключений в Python
  39. Python enumerate() функции
  40. Работа с изображениями PIL
  41. Функции map, filter, reduce
  42. Управление сессиями в Python
  43. Эффективная конкатенация строк в Python
  44. Срезы в Python
  45. Распаковка элементов массива
  46. JMESPath в Python

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