Декораторы в Python

Парадокс этого курса в том, что он МАЛЕНЬКИЙ, но при этом позволяет сделать БОЛЬШОЙ шаг в понимании функциональных возможностей Python и внутренней механики функций.

О курсе

С использованием декораторов решается огромный круг задач в программировании на Python. Ведь это очень удобный и практичный инструмент, позволяющий менять возможности функции в зависимости от конкретной задачи, не изменяя при этом саму функцию.

Без понимания принципа работы декораторов очень сложно уверенно продвигаться в освоении различных направлений в программировании на Python.

Это одна из тех тем, без которой в какой-то момент становится трудно читать чужой профессиональный код, понимать устройство популярных библиотек и писать собственные более гибкие и аккуратные решения.

Без понимания работы декораторов сложно по-настоящему разобраться в логировании, кэшировании, контроле доступа, обработке ошибок, профилировании функций, а также в более зрелых подходах к организации кода, где важна не только сама логика программы, но и то, как эта логика расширяется, контролируется и переиспользуется.

В курсе мы шаг за шагом разберёмся в логике, используемой в декораторах. Сначала мы рассмотрим по отдельности механизмы, на которых строится логика их работы, а затем соберём эти знания воедино и у вас сложится полная картина механизма работы декораторов. Это не сложно, главное правильно объяснить, что автор и постарался сделать в этом курсе.

Для кого этот курс

ЕСЛИ ВЫ НЕ ПОНИМАЕТЕ, КАК ЭТО РАБОТАЕТ: import time from functools import wraps def log_action(func): @wraps(func) def wrapper(*args, **kwargs): print(f"[LOG] Функция '{func.__name__}' запускается с аргументами: {args} {kwargs}") result = func(*args, **kwargs) print(f"[LOG] Функция '{func.__name__}' завершена") return result return wrapper def timer(func): @wraps(func) def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"[TIMER] Время выполнения '{func.__name__}': {end_time - start_time:.5f} сек") return result return wrapper @log_action @timer def process_orders(orders): print("Обработка заказов...") total = sum(order['amount'] for order in orders) print(f"Всего заказов: {len(orders)}, сумма: {total}") return total orders = [ {'id': 1, 'amount': 100}, {'id': 2, 'amount': 250}, {'id': 3, 'amount': 75}, ] process_orders(orders) Результат: [LOG] Функция 'process_orders' запускается с аргументами: ([{'id': 1, 'amount': 100}, {'id': 2, 'amount': 250}, {'id': 3, 'amount': 75}],) {} Обработка заказов... Всего заказов: 3, сумма: 425 [TIMER] Время выполнения 'process_orders': 0.00001 сек [LOG] Функция 'process_orders' завершена 425 НО ХОТИТЕ ПОНЯТЬ. ТОГДА ЭТОТ КУРС ДЛЯ ВАС.

Начальные требования

Для комфортного и осмысленного прохождения курса желательно, чтобы вы владели базовыми основами Python.

Этот курс не рассчитан на абсолютный старт с нуля: в нём мы будем не просто знакомиться с функциями, а постепенно переходить к более глубокому пониманию того, как функции устроены внутри Python и как на их основе строятся декораторы.

Наши преподаватели

Как проходит обучение

Курс состоит из теоретической части в виде текстовых уроков и практических заданий для закрепления теории.

Программа курса

загружаем...
Price: Бесплатно

Расскажите о курсе друзьям

Price: Бесплатно