Курс 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. Создание GUI с Tkinter: Entry
  2. Перемешивание списка с shuffle()
  3. Очистка строки в Python
  4. GitHub в Telegram: подписка на уведомления
  5. Преобразование многоуровневого словаря
  6. Метод join() для объединения строк
  7. Обработка исключений в Python
  8. Замена подстроки
  9. Документация функции help() в Python
  10. Операции с датами в Python
  11. Изменение элемента списка
  12. Реализация метода __abs__ в Python
  13. Копирование объектов в Python
  14. Метод split() для разделения строк
  15. Python Translator: создание локальных переводчиков
  16. Работа с пользовательским вводом
  17. Работа с файлами в Python
  18. Преобразование чисел в слова
  19. Метод bool() в Python
  20. Удаление элемента по индексу в Python
  21. Python reversed() vs срез[::-1]
  22. Печать календаря
  23. Блок else в Python
  24. Исправление ошибки NameError
  25. Автоматизация скриптов на AWS Lightsail.
  26. Абстракции словарей и множеств в Python
  27. Переопределение метода sub
  28. Генераторы в Python
  29. Регулярные выражения: метод match
  30. Разделение строки с помощью split()
  31. Ограничение итераций в Python
  32. Поиск индекса элемента
  33. GitHub в Telegram: подписка на уведомления
  34. Пропуск строк в файле с itertools
  35. Инвертирование словаря
  36. Преобразование чисел в Python
  37. Сравнение строк в Python
  38. Красивый вывод списка
  39. Удаление элементов по срезу
  40. История Python
  41. Работа с контекст-менеджером «with»
  42. Изменения в обработке логических значений
  43. Enum в Python: создание и использование перечислений
  44. Метод is_absolute() для PurePath
  45. Распаковка аргументов в Python
  46. Проверка типов с использованием isinstance
  47. Проверка версии Python
  48. Доступ к локальным переменным
  49. Копирование в Python

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