Курс 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. Создание обратного итератора
  4. Разработка Telegram-ботов
  5. Логирование в Python
  6. Основные операции с библиотекой Numpy
  7. Реверс строки в Python
  8. Искажение имен в Python
  9. Объединение списков в Python
  10. Создание таблиц в Python с PrettyTable
  11. Работа со строками
  12. Работа с коллекциями Python
  13. Сортировка в Python
  14. Переопределение метода __and__
  15. Изменение логики работы с временем
  16. 9 уловок для чистого кода
  17. Проблемы с dict в Python
  18. Многострочные строки в Python
  19. Подчеркивание в REPL
  20. Скрытие вывода данных
  21. Проверка типа объекта в Python
  22. Оптимизация интернирования строк
  23. Принципы SRP и OCP
  24. Использование html-скриптов в Jupyter Notebook
  25. Создание копии итератора
  26. Расширение информации об ошибке в Python
  27. Очистка данных с Pandas
  28. Работа с файлами в Python
  29. Регистрация на курсы SF Education
  30. Работа с геоданными с помощью geopy
  31. Python: отсутствие точек с запятыми
  32. Многоточие в Python
  33. Объединение, распаковка и деструктуризация
  34. Работа с исключениями в Python
  35. Проверка наличия элемента в списке
  36. Поиск частого элемента
  37. Сложные типы данных в Python
  38. Перевод эмодзи и эмотиконов.
  39. CLI-инструмент howdoi
  40. Путь к интерпретатору Python
  41. Форматирование строк в Python
  42. Абстракции словарей и множеств в Python
  43. Тестирование модели в PyTorch
  44. Возведение в квадрат с помощью itertools
  45. Декораторы в Python
  46. Перехват исключений в Python
  47. Объявление переменных в Python
  48. Удаление специальных символов
  49. Enum в Python: создание и использование перечислений

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