Курс 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. Обработка исключений в Python
  2. Проверка подстроки в строке
  3. Работа с модулем bisect
  4. Преобразование строк в числа в Python
  5. Проверка элементов списка условием
  6. Многоточие в Python
  7. Встроенные функции Python
  8. enumerate() в Python для работы с индексами
  9. Декоратор Property в Python
  10. Функция sleep() в Python
  11. Работа с датой и временем в Python
  12. Вывод баннеров
  13. Функция reduce() в Python
  14. Аргумент по умолчанию
  15. Работа со словарями
  16. Различия символов в Python
  17. Генераторы в Python
  18. Структура строк в Python
  19. Условное добавление элементов в список
  20. Печать месячного календаря
  21. Функция map() в Python
  22. Тернарный оператор в Python
  23. Объединение словарей в Python
  24. Декоратор Ajax required
  25. Переопределение метода __or__()
  26. Наиболее частотные элементы с помощью Counter
  27. Определение объема памяти объекта
  28. Работа с JSON данными в Python
  29. Реверс строки в Python
  30. Генерация чисел с range()
  31. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  32. JSON в Python: модуль, dump, dumps, load
  33. Отправка поздравлений по дню рождения
  34. Сумма элементов списка
  35. Группировка элементов в словарь
  36. Генераторные функции в Python
  37. Метод append() для списка
  38. Форматирование данных с помощью pprint
  39. Передача неизвестных аргументов в Python.
  40. Python OrderedDict и fromkeys() — работа с словарями
  41. Python Ellipsis использование
  42. Извлечение данных из JSON
  43. Фильтрация элементов с помощью islice

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