Pythoner
Фотография
✈️Декораторы — это функции, которые позволяют изменять или расширять поведение других функций без изменения их исходного кода. Это мощный инструмент, который помогает писать более чистый и повторно используемый код.
➡️Пример базового декоратора, который измеряет время выполнения функции:
import time
# Определяем декоратор
def timer_decorator(func):
def wrapper():
start_time = time.time() # Засекаем время начала
func() # Вызываем оригинальную функцию
end_time = time.time() # Засекаем время окончания
print(f"Функция {func.__name__} выполнилась за {end_time - start_time:.4f} секунд")
return wrapper
# Применяем декоратор к функции
@timer_decorator
def my_function():
time.sleep(2) # Имитируем долгую операцию
print("Функция завершила работу")
# Вызываем функцию
my_function()
⬆️Результат:
Функция завершила работу
Функция my_function выполнилась за 2.0012 секунд
➡️Практическое применение
— Логирование действий пользователя.
— Проверка авторизации перед выполнением функции.
— Кэширование результатов функции для ускорения работы.
➡️Почему декораторы полезны?
— Чистота кода : Вы можете добавить общую логику (например, логирование, проверку прав доступа) без изменения основной функции.
— Повторное использование : Однажды написанный декоратор можно применять к разным функциям.
— Сокращение дублирования : Если одна и та же логика нужна в нескольких местах, декоратор поможет избежать копипасты.
🐍 Pythoner
48 · 2.1K ·