Курс 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"
- Атрибуты класса и экземпляра в Python
- Игра «Угадывание чисел»
- Метод __index__ в Python
- Комментарии в Python
- Объединение итераторов
- Повторение и перенос строки
- Бесконечные списки в Python
- Преобразование вложенного списка
- Удаление элемента по индексу в Python
- Работа с множествами в Python
- Concrete Paths в Python
- Перегрузка операторов в Python
- Метод gt в Python
- Форматирование строк с % в Python
- Объединение Python и Shell
- Создание директории в Python
- Python Translator: создание локальных переводчиков
- Проверка файла .py на синтаксис.
- Использование defaultdict в Python
- Именованные срезы в Python
- Замыкания в Python
- Форматирование данных с помощью pprint
- Удаление элементов из списка в Python
- Копирование словарей и списков в Python
- Подсчет элементов в Python
- Основные методы NumPy
- Python enumerate() использование
- Склеивание строк без циклов
- Метод __iand__ для пользовательских классов
- Создание треугольника Паскаля
- Метод join() для объединения строк
- Поиск кода
- Обработка исключения UnboundLocalError
- Проверка наличия элемента в списке
- Разделение строки с регулярными выражениями
- Использование метода lower()
- Генераторы в Python
- Форматирование строк в Python
- Функция print() — вывод информации
- Работа с областями видимости переменных
- Отладка кода
- Получение комбинаций в Python
- Форматирование заголовков в Python
- Нахождение самого длинного слова в списке с помощью max
- Генераторы в Python
- Встроенные функции Python
- Работа с библиотекой requests
- Метод rlshift для битового сдвига















