Углубленный Python

Цель курса — изучить тонкости языка, асинхронное программирование и некоторую черную магию.

- Познание тонкостей работы языка Python.
- Умение распараллеливать вычисления для повышения скорости работы приложения.
- Погружение в мир асинхронной веб-разработки на Python и взгляд изнутри.
- Становление настоящим Python-гуру.

Подробнее

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

Целевая аудитория курса — люди, которые уже знакомы с Python, знают основы синтаксиса, структуры данных и умеют применять их для решения задач. Материалы и домашние задания основываются на реальных задачах, с которыми сталкиваются разработчики при написании нагруженных и требовательных к производительности систем.

При наличии вакансий лучшим выпускникам предлагается стажировка в Mail.Ru Group.

Подробнее

Преподаватели

Александр Опрышко Александр Опрышко

Выпускник Технопарка, ведущий разработчик KTS Studio

Игорь Латкин Игорь Латкин

Ведущий разработчик KTS Studio

Программа

занятие Часы в ауд. + сам. работа

Лекция №1: Объектная модель  

Объектная модель, MRO, наследование, слоты, дескрипторы данных, проперти, декораторы, класс-декораторы.
4 часа

Лекция №2: Метаклассы   + ДЗ №1

Метаклассы, магические методы, abc
Домашнее задание №1: Написать ORM
Написать ORM
4 часа

Лекция №3: Работа с памятью  

GC, memory model, устройство cpython
4 часа

Лекция №4: Потоки   + ДЗ №2

GIL, Threads, multiprocessing, IPC
Домашнее задание №2: Генерирование qr кодов
Генерирование изображений с qr кодами, используя multiprocessing
4 часа

Лекция №5: Асинхронное программирование   + ДЗ №3

asyncio, yield, yield from, event loop
Домашнее задание №3: Web-crawler
[10 баллов] Разработать web-crawler и поиск для сайта https://docs.python.org (или любого другого контентного)
Crawler должен обходить только ссылки внутри указанного домена.
Скачивание ресурсов должно быть реализовано в нескольких параллельных корутинах для достижения максимальной скорости обкачки.
Скорость обкачки должна быть параметром краулера. Например, 10 rps должно означать, что в секунду должно быть не более 10 запросов на домен.
Каждая страница должна быть положена в индекс elasticsearch. Можно использовать библиотеку aioelasticsearch.

[5 баллов] Разработать api, используя aiohttp или sanic, которое будет отдавать результаты поиска

/api/v1/search
Должен принимать следующий параметры
q - текстовый запрос
limit - количество результатов
offset - офсет результатов
В ответ должен возвращать список результатов (ссылок на обкачиваемый сайт), отсортированные по релевантности
4 часа

Лекция №6: c-extensions   + ДЗ №4

ctypes, cffi, c-extensions, cython. Старт интерпретатора из C.
Домашнее задание №4: Работа с матрицами

[12 баллов] Необходимо реализовать класс Matrix, хранящий целые числа через c-extension. Должен поддерживать следующие операции:
  • Сложение матрицы и матрицы
  • Умножение и деление матрицы на целое число
  • Умножение двух матриц
  • [доп. +2 балла] Транспонирование матрицы
Также должно быть реализованы следующее:
  • конструктор должен принимать массив массивов чисел и преобразовывать это во внутреннее хранилище
  • repr и str над объектом матрицы
  • [доп. +2 балла] оператор in, принимающие число и возвращающий True если такой элемент есть в матрице
  • Должен быть реализован доступ по таплу координат в матрице. Например:
    m = Matrix([[1, 2], [3, 4]])
    m[(0, 1)] - должно вернуть 2

[3 балла] Реализовать умножение матриц на питоне и сравнить производительность кода на C и на Python.
4 часа

Лекция №7: Профилирование, Тестирование  

Профилирование, Тестирование
4 часа

Лекция №8: Дополнительные темы   + ДЗ №5

packaging, deploy. wheel, eggs, CI.
работа с датами, logging, unicode, decimal, typing
Домашнее задание №5: Ultimate
Написать коннектор к БД (на выбор: mongodb, redis, memcached)
4 часа

Семинар №1: Разбор домашних заданий  

Будут разобраны основные ошибки при выполнении первого ДЗ и можно будет защитить выполненные работы.
4 часа