Курс 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. Метод __index__ в Python
  4. Комментарии в Python
  5. Объединение итераторов
  6. Повторение и перенос строки
  7. Бесконечные списки в Python
  8. Преобразование вложенного списка
  9. Удаление элемента по индексу в Python
  10. Работа с множествами в Python
  11. Concrete Paths в Python
  12. Перегрузка операторов в Python
  13. Метод gt в Python
  14. Форматирование строк с % в Python
  15. Объединение Python и Shell
  16. Создание директории в Python
  17. Python Translator: создание локальных переводчиков
  18. Проверка файла .py на синтаксис.
  19. Использование defaultdict в Python
  20. Именованные срезы в Python
  21. Замыкания в Python
  22. Форматирование данных с помощью pprint
  23. Удаление элементов из списка в Python
  24. Копирование словарей и списков в Python
  25. Подсчет элементов в Python
  26. Основные методы NumPy
  27. Python enumerate() использование
  28. Склеивание строк без циклов
  29. Метод __iand__ для пользовательских классов
  30. Создание треугольника Паскаля
  31. Метод join() для объединения строк
  32. Поиск кода
  33. Обработка исключения UnboundLocalError
  34. Проверка наличия элемента в списке
  35. Разделение строки с регулярными выражениями
  36. Использование метода lower()
  37. Генераторы в Python
  38. Форматирование строк в Python
  39. Функция print() — вывод информации
  40. Работа с областями видимости переменных
  41. Отладка кода
  42. Получение комбинаций в Python
  43. Форматирование заголовков в Python
  44. Нахождение самого длинного слова в списке с помощью max
  45. Генераторы в Python
  46. Встроенные функции Python
  47. Работа с библиотекой requests
  48. Метод rlshift для битового сдвига

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