Курс 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. Оператор @ для умножения матриц
  2. Поиск HTML-элементов с BeautifulSoup
  3. Python 3.12: Псевдонимы типов
  4. Обработка данных в Python
  5. Модуль os в Python: работа с файлами
  6. Транспонирование 2D-массива с помощью zip
  7. Метод __imod__ для Python
  8. Функция zip() — объединение последовательностей
  9. Склеивание строк без циклов
  10. Метод lt для сортировки объектов
  11. Методы split() и join() — Python строк.
  12. Множественные конструкторы в Python
  13. Библиотека funcy: удобные утилиты
  14. Работа с рекламными данными в Pandas
  15. Глобальные переменные в Python
  16. Настройка шрифта и цвета в Tkinter
  17. Оператор морж в Python 3.8
  18. Принципы LSP и ISP в Python
  19. Возвращение нескольких значений
  20. Переменные в Python: сокращение гласных
  21. Копирование в Python
  22. Установка максимального количества цифр
  23. Подсчет количества элементов в списке
  24. Оформление кода по PEP 8
  25. Вакансии в Nebius
  26. Управление импортом в Python
  27. Переворот строки
  28. Отправка HTTP-запросов в Python
  29. Работа со строками
  30. Именованные срезы в Python
  31. Оператор умножения для вектора
  32. Генерация резюме в Gensim
  33. Изменение переменной в Python: nonlocal
  34. Мониторинг памяти с Pympler
  35. Разделение строк в Python
  36. Создание комплексных чисел
  37. Работа с аргументами командной строки
  38. Безопасный доступ к значениям словаря
  39. Тайное преобразование типа ключа
  40. Хэш-функции и метод цепочек
  41. Функция enumerate в Python
  42. Обработка ошибок в Python
  43. Поиск уникальных и повторяющихся элементов
  44. OrderedDict — упорядоченный словарь
  45. Компиляция регулярных выражений
  46. Сравнение def и lambda функций в Python
  47. Работа с CSV файлами
  48. Отслеживание прогресса с tqdm
  49. Метод __float__ в Python

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