Если ты уже освоил основы Python и хочешь вывести свои навыки на новый уровень, этот лайфхак поможет тебе писать более эффективный, читаемый и профессиональный код. Мы разберём, как комбинировать декораторы, генераторы и контекстные менеджеры для решения сложных задач. 1. Декораторы для кэширования и логирования Декораторы — это мощный инструмент для модификации функций без изменения их кода. Давай создадим декоратор, который кэширует результаты и логирует время выполнения. import functools
import time
import logging
logging.basicConfig(level=logging.INFO)
def cache_and_log(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
# Кэширование результата
cache_key = str(args) + str(kwargs)
if not hasattr(wrapper, 'cache'):
wrapper.cache = {}
if cache_key in wrapper.cache:
logging.info(f"Результат для {func.__name__} взят из кэша")
return wrapper.cache[cache_key]
# Логирование времени выпол