Курс 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"
- Сравнение def и lambda-функций
- Итерация по копии коллекции
- Утечки переменных цикла в Python 3.x
- Проблемы с именами переменных
- Counter() — подсчет элементов
- Частичное применение функций в Python
- Python 3.12: Псевдонимы типов
- Анонимные функции в Python
- Оптимизация гиперпараметров с Scikit Optimize
- Работа с аргументами командной строки в Python
- Обратный список чисел
- Функция zip() в Python
- Динамические маршруты во Flask
- Модуль inspect
- Получение размера объекта с sys.getsizeof()
- Генераторы в Python
- Работа с срезами в Python
- Генератор бросков кубиков
- Преобразование строки в число
- Создание детектора плагиата
- Ускорение выполнения кода в Python
- Преобразование данных в Python
- Управление импортом в Python
- Профилирование кода на Python
- Возврат нескольких значений из функции
- Аннотации типов в Python
- Метод enumerate() в Python
- Отладка регулярных выражений в Python
- Просмотр атрибутов и методов класса
- Переопределение метода divmod
- Создание namedtuple списком полей
- Метод __index__ в Python
- Операции с датами в Python
- Метод join для наборов
- Функция product() из itertools
- Работа с файлами в Python
- Основные функции и модули Python
- Декораторы в Python
- Обход элементов в Python
- Генераторы по генератору
- Преобразование числа в восьмеричную строку
- Избегание циклических зависимостей классов в Python
- Принципы программирования
- Построение графиков в терминале с bashplotlib
- Оператор += для объединения строк
- Список импортированных модулей в Python
- Логирование с Logzero
- OrderedDict — упорядоченный словарь
- Константы в модуле cmath
- PrettyTable: создание таблицы















