Курс 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. Декораторы в Python
  3. Модуль antigravity: генерация координат
  4. Создание вкладок с TKinter
  5. Расчет времени выполнения программы
  6. Работа с zip()
  7. Numpy: использование Ellipsis
  8. Основы работы с базами данных в Python
  9. UserList в Python: Описание и примеры использования
  10. Нарезка списков в Python
  11. Оператор * в Python
  12. Создание новых функций с помощью functools.partial
  13. Сортировка в Python
  14. Создание словарей и множеств в Python.
  15. Сравнение def и lambda функций в Python
  16. Инверсия списков и строк в Python
  17. Defaultdict в Python
  18. Обязательные аргументы в Python
  19. Измерение времени выполнения кода
  20. Генераторы в Python
  21. Экспорт данных с помощью writefile
  22. Создание и обучение модели с Keras
  23. Подсчет количества элементов в списке
  24. Модуль Antigravity в Python 3
  25. Виртуальные среды в Python
  26. Переопределение метода divmod
  27. Хранение переменных в Python.
  28. Логические значения в Python
  29. Именованные кортежи в Python
  30. Метод __getitem__ в Python
  31. Иерархия классов в Python
  32. Удаление ресурса в Python
  33. Работа с аргументами командной строки
  34. Глобальные переменные в Python
  35. Подсказки типов в Python
  36. Метод округления чисел
  37. Функции высшего порядка в Python
  38. Форматирование строк с % в Python
  39. Подсчет элементов в Python
  40. Наиболее частотные элементы с помощью Counter
  41. Преобразование в float
  42. Просмотр внешних файлов в %pycat
  43. Модуль functools в Python
  44. Обход дочерних элементов BeautifulSoup
  45. Аннотации типов в Python
  46. Структуры данных в Python
  47. Транспонирование 2D-массива с помощью zip
  48. Проверка наличия элемента в списке

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