Курс Python → Декораторы в Python
Декораторы в Python позволяют добавлять дополнительное поведение к уже существующим функциям, не изменяя их основной логики. Это особенно удобно, когда нужно добавить однотипное действие к нескольким функциям или когда требуется выполнить какие-то действия до и после вызова функции.
Примером может служить декоратор, который замеряет время выполнения функции. Для создания декоратора в Python используется синтаксис с символом @. Например, декоратор, который выводит время выполнения функции, может выглядеть следующим образом:
import time
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Время выполнения функции {func.__name__}: {end_time - start_time} секунд")
return result
return wrapper
@timer
def some_function():
# код функции
В данном примере декоратор timer измеряет время выполнения функции some_function и выводит результат на экран. При вызове функции some_function сначала будет выведено время выполнения, а затем будет выполнен основной код функции.
Помимо замера времени выполнения, с помощью декораторов можно реализовать множество других дополнительных функций, таких как логирование, кеширование, валидация параметров и многое другое. Использование декораторов делает код более чистым, модульным и понятным, так как каждая функция отвечает только за свою основную задачу, а дополнительное поведение вынесено в отдельные декораторы.
Таким образом, использование декораторов в Python позволяет значительно упростить и улучшить структуру кода, делая его более гибким и поддерживаемым. Рекомендуется ознакомиться с различными примерами использования декораторов и экспериментировать с ними для более глубокого понимания их работы.
Другие уроки курса "Python"
- Необязательные аргументы в Python
- Управление асинхронными задачами на Python.
- Определение относительного пути
- Метод ifloordiv для пользовательских классов
- Поиск шаблона в начале строки
- Создание обратного итератора
- Функции высшего порядка в Python
- Функция zip() в Python
- Транспонирование матрицы
- Метод index() в Python
- Python и Монти Пайтон
- Улучшенные подсказки для импорта в Python 3.12
- Получение текущей даты и времени с помощью datetime
- Создание OrderedDict
- Генерация случайных чисел в Python
- ChainMap.new_child() — добавление нового словаря
- F-строки в Python 3.8
- Генерация строк с .join()
- Python: отсутствие точек с запятыми
- Оператор «not» в Python
- Фильтрация списков с itertools
- Избегание циклических зависимостей классов в Python
- Создание копии итератора
- Метод join для объединения строк
- Установка и использование Python-dateutil
- Big O оптимизация
- Принципы программирования
- Сравнение строк в Python
- Создание новых списков через list comprehensions
- Инверсия списка/строки в Python
- Реализация операции -= для пользовательского класса
- Подписка на SelectelNews в Twitter
- Базовые объекты Python
- Избегайте использования goto
- Философия Python
- Генерация случайных чисел в Python
- Создание списков в Python
- Подсчет элементов с помощью Counter из collections
- Установка виртуального окружения Python
- Ключевое слово global в Python















