Курс 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 enumerate() функции
  3. Возврат нескольких значений
  4. Удаление элемента по индексу
  5. Запуск асинхронной корутины
  6. Управление мышью и клавиатурой с Pyautogui
  7. Генераторы в Python
  8. Работа с zip-архивами в Python
  9. Конкатенация строк в Python
  10. Установка User-Agent в Python
  11. Создание списков в Python
  12. Настройка вывода NumPy
  13. Основы работы со строками в Python
  14. Функции в Python
  15. Python groupby() из itertools: работа с повторяющимися элементами
  16. Срез списка в Python
  17. Сортировка HTML-элементов
  18. Комментарии в Python
  19. Вызов внешних программ в Python с помощью sh
  20. Добавление цвета в консоли
  21. Enum в Python
  22. Атрибуты класса и экземпляра
  23. Передача неизвестных аргументов в Python.
  24. Создание и инициализация объектов
  25. Форматирование строк в Python
  26. Асинхронное программирование с asyncio
  27. Принципы SRP и OCP
  28. Генераторы в Python
  29. Форматирование кода на Python
  30. Условные выражения в Python
  31. Запуск внешнего кода в Jupyter
  32. Оператор «or» в Python
  33. Подсказки типов в Python
  34. Объединение словарей в Python
  35. Операция += для списков
  36. Преобразование числа в восьмеричную строку
  37. Назначение максимального и минимального значения переменной в Python.
  38. Python OrderedDict и fromkeys() — работа с словарями
  39. Структуры данных в Python
  40. Изменение списка срезом
  41. Работа с итераторами в Python
  42. Пустой оператор pass в Python
  43. Глубокое копирование объектов

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