Освойте асинхронное и метапрограммирование, изучите аннотацию типов, профилирование и напишите собственное приложение на FastAPI. Улучшите свои навыки Python, чтобы совершить быстрый рост вашего грейда до уровня middle.
Кому подойдет курс:
1. Python-разработчик
- Узнайте, что у Python под капотом: метаклассы, генераторы, декораторы, потоки (threading) и многопоточность (multiprocessing) для быстрого продвижения к уровню middle.
2. Data Scientist
- Python отлично подходит для дата-сайентистов благодаря обширной экосистеме библиотек и фреймворков.
- FastAPI и SQLAlchemy будут особенно полезны для создания API и работы с базами данных в ваших проектах.
3. Сменить профессию
- Для Frontend разработчика - повышение рыночной стоимости, Backend разработчика - расширение скиллсета и кругозора, а для QA-инженеры - отличный шанс перейти в автоматизаторы.
Содержание:
Блок 1 - Углубленная работа с декораторами
- Вводное занятие: Сравнение multithreading и multiprocessing
- Вложенные декораторы
- Классы-декораторы и декораторы классов
Блок 2 - Сложные простые типы
- Строки и байты - в чем разница. Кодировки.
- Числа с плавающей точкой и проблемы, которые они приносят
- Тестирование по блоку 1 и 2
Блок 3 - Функциональное программирование в Python и его минусы
- Сравнение помощников map, filter с comprehensions. Лямбда функции
- Рекурсия, стек, переполнение стека, хвостовая рекурсия
Блок 4 - Генераторы и итераторы
- Как связаны итераторы и генераторы
- Создание генератора
- Создание итератора
- Генераторы в обратную сторону (передача данных в генератор), корутины
Блок 5 - Знакомство с асинхронной работой (asyncio)
- Введение в асинхронное программирование. Зачем нужно асинхронное программирование. Группы задач
- Асинхронные запросы в сеть
- Цикл событий альтернативный (сторонний) цикл
- Асинхронное взаимодействие с файлами
- Тестирование по блоку 3, 4 и 5
Блок 6 - Классы изнутри
- Метаклассы
- "Протоколы. Абстрактные классы
- Дескрипторы
- Слоты в классах
- Как работает super
- Сокрытие имени (name mangling)
Блок 7 - Работа с ссылками, внимание к памяти
- Как работает сборщик мусора
- Сильные и слабые ссылки
Блок 8 - Аннотации типов. Системы контроля зависимостей. Интроспекция
- Как описывать аннотации типов, зачем они нужны
- Работа с mypy
- Системы контроля зависимостей
- Интроспекция, генерация новой сигнатуры
- Тестирование по блоку 6, 7 и 8
Блок 9 - Тестирование
- Unittest
- Покрытие кода (coverage)
- Pytest, плагины
- Фикстуры
- Параметризация и метки
- Конфигурация тестов
Блок 10 - Очереди задач
- Встроенные очереди задач
- Асинхронные очереди задач
- Сервисы для очередей задач. Celery. RabbitMQ
- Интроспекция, генерация новой сигнатуры
- Тестирование по блоку 9 и 10
Блок 11 - Профилирование
- Что такое профилирование и зачем нужно. Инструменты для профилирования
- Блок 12 - Ускорение обработки задач
- Threading, GIL
- Multiprocessing
Блок 12 - Ускорение обработки задач
- Threading, GIL
- Multiprocessing
Блок 13 - Низкий уровень
- Компиляция кусков кода. Чтение и анализ байт-кода. Как работает виртуальная машина Python
- Тестирование по блоку 11, 12 и 13
Блок 14 - Работа с базой данных через SQLAlchemy
- Знакомство с SQLAlchemy 2.0Лекция
- Асинхронная работа с базой данных на SQLAlchemy
Блок 15 - Веб-разработка на FastAPI
- Знакомство с FastAPI
- FastAPI настройки git: commit, remote, push
- Работа с базой данных через SQLAlchemy в веб-приложении
- Развитие приложения на FastAPI
- Взаимодействие между приложениями
- Тестирование по блоку 14 и 15
Финальное тестирование
- Финальное тестирование