Курс 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. Декораторы для регистрации функций
  3. Тестирование функции сложения
  4. Установка и использование Telegram API в Python
  5. Работа со строками
  6. Работа с кортежами в Python
  7. Проверка однородности элементов списка
  8. Уникальные значения из списка
  9. Форматирование строк в Python
  10. Оптимизация гиперпараметров с Scikit Optimize
  11. Библиотека sh: использование команд bash в Python
  12. Создание новых функций через partial
  13. Списковое включение в Python
  14. Преобразование числа в восьмеричную строку
  15. Поиск шаблона в начале строки
  16. Установка и использование pyshorteners
  17. Модуль pprint: улучшение вывода данных
  18. Работа со стеком в Python
  19. Генераторы в Python
  20. Потоковый ввод в Python
  21. Работа с каталогами в Python
  22. Ускорение кода с помощью векторизации
  23. Курс по дообучению ChatGPT
  24. Основы работы со списками
  25. Хэш-функции в Python
  26. JSON-esque в Python
  27. Модуль functools в Python
  28. Colorama: окрашивание текста в Python
  29. Любовь к Python
  30. Экспорт функций в Python
  31. Python Enumerate
  32. Бесконечные списки в Python
  33. Обновление ключей в Python
  34. Регистрация на хакатоне
  35. Очистка данных в Python
  36. Перемещение и удаление файлов в Python
  37. Преобразование чисел в Python
  38. Функции классификации комплексных чисел
  39. Анонимные функции в Python
  40. Отладка в командной строке
  41. Проверка списка: any() и all()
  42. Метод setitem в Python
  43. Форматирование строк в Python
  44. Библиотека Emoji: использование смайлов в Python
  45. Установка User-Agent в Python

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