Курс 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. kwargs в Python
  2. List Comprehension Tutorial
  3. Вызов функций по строке в Python.
  4. Извлечение статей с newspaper3k
  5. Модуль array: создание и использование массивов
  6. Поиск подстроки в строке
  7. Списки: объединение, изменение
  8. Игра «Камень, ножницы, бумага» — Python
  9. Многострочные комментарии в Python
  10. Создание циклической ссылки
  11. Округление в Python
  12. Удаление дубликатов с помощью множеств
  13. Функции в Python: создание и вызов
  14. Присвоение значений переменным в Python
  15. Работа с CSV файлами в Python
  16. Просмотр файла в Jupyter Noteboo
  17. Ограничение ресурсов в Python
  18. Отображение графиков в Jupyter с Matplotlib
  19. Приоритет операций в Python
  20. Функции min(), max(), sum()
  21. Очистка данных в Python
  22. Декораторы в Python
  23. Создание пользовательской коллекции в Python
  24. Счетчик ссылок в Python
  25. Создание класса очереди
  26. Разделение списка на гнппы
  27. Работа с модулем cmath
  28. Переопределение метода xor в Python
  29. Настройка логгера Logzero
  30. Создание пар из последовательностей
  31. Генераторы данных
  32. Работа с файлами и директориями в Python.
  33. Установка Home Assistant
  34. Скрытие вывода данных
  35. Установка User-Agent в Python
  36. Работа с срезами в Python
  37. Подсчет часто встречающихся элементов
  38. Поиск частых элементов в списке
  39. Строковое представление объектов
  40. Преобразование текста в речь с Python
  41. Печать комбинаций в Python с Itertools
  42. Генераторы списков в Python
  43. Выбор редактора кода.
  44. Переопределение метода
  45. Python: отличительная особенность — отступы

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