Курс 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. Установка и использование Virtualenv
  4. CSV строка разделение в Python
  5. Получение текущей директории
  6. Модуль Antigravity в Python 3
  7. Работа с файлами в Python
  8. Сложение матриц в NumPy
  9. Операторы увеличения и уменьшения переменной
  10. Декоратор Ajax required
  11. Циклы for в Python
  12. Распаковка элементов массива
  13. Проверка переменных окружения в Python
  14. Установка пакетов с помощью pip
  15. Установка и использование pyshorteners
  16. Удаление URL-адресов в Python
  17. Генераторные функции в Python
  18. Профилирование данных с Pandas.
  19. Нан-рефлексивность в Python
  20. Python и Монти Пайтон
  21. Python 3.12: переиспользование кавычек
  22. Настройка нарезки списков
  23. Сортировка данных с лямбда-функциями
  24. Оператор is в Python
  25. Активация Matplotlib в Jupyter
  26. Распаковка аргументов в Python
  27. Оператор «and» в Python
  28. Обратный список чисел
  29. Отображение HTML кода в Python
  30. Многоточие в Python
  31. Удаление элемента по индексу в Python
  32. Работа с рекламными данными в Pandas
  33. Метод radd для пользовательских чисел
  34. Управление виртуальными окружениями в Python
  35. Значения по умолчанию в Python
  36. Уникальность ключей в словаре
  37. Метаклассы в Python
  38. Применение функции к элементам списка
  39. Передача словаря через **kwargs
  40. Защита данных в Python
  41. Отправка POST запроса на сервер.
  42. Вакансии в Nebius
  43. Изменения в обработке логических значений
  44. Метод repr() в Python
  45. Возврат нескольких значений
  46. Создание панели меню Tkinter

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