Курс 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. Функция zip() — объединение последовательностей
  2. Работа с Colorama
  3. Защита данных в Python
  4. История Python
  5. Распаковка значений в Python
  6. Именование столбцов в Python с pandas
  7. Создание спинбокса в tkinter
  8. Функция all() в Python
  9. Чтение и запись TOML-конфигов
  10. Автоматизация действий с Pyautogui
  11. Создание графиков в терминале
  12. Итерация по итерируемым объектам
  13. Работа с пользовательским вводом
  14. Методы в Python
  15. Манипуляция формой массива в Numpy
  16. Операторы присваивания в Python
  17. Нан-рефлексивность в Python
  18. Функция reduce() в Python
  19. Метод __imod__ для Python
  20. Метод rmatmul для пользовательских матриц
  21. Удаление дубликатов из списка
  22. Перемещение и удаление файлов в Python
  23. Проверка подстроки в строке
  24. Копирование словарей и списков в Python
  25. Перевод эмодзи и эмотиконов.
  26. Упрощение условных выражений с тернарным оператором
  27. Фильтрация элементов с помощью islice
  28. Участие в LP стейкинге Waves
  29. Работа с deque из collections
  30. Множественное наследование в Python
  31. Экспорт внешнего файла с помощью writefile
  32. Списки в Python: основы
  33. Поиск элементов BeautifulSoup
  34. Представление бесконечности в Python
  35. Абстракции словарей и множеств в Python
  36. Декораторы в Python
  37. Лямбда-функции в цикле
  38. Обработка ошибок ввода данных
  39. Создание инструмента обнаружения плагиата
  40. Передача словаря через **kwargs
  41. Округление банкира в Python
  42. Удаление специальных символов
  43. Python Метод sleep() времени
  44. Освоение Python
  45. Шаблоны Flask: условия и циклы
  46. Комментарии в Python.
  47. Объединение, распаковка и деструктуризация

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