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

Идеология и инструменты разработки ПО

  1. Инструменты разработки на Python.

  2. Создание виртуальных окружений. Модули venv, virtualenv. Виртуальные окружения conda-env.

  3. Сборка пакета с setuptools и установка пакета в режиме для разработчика.

  4. Тестирование ПО. Модули unittest, pytest. Системы запуска и контроля тестов.

  5. Создание документации пакета с помощью sphinx.

  6. CI/CD. Github Actions.

  7. Интерактивные среды.

  8. Распространения приложений с помощью setuptools.

Устройство Python

  1. Трансляторы Python. Байт-код Python и модуль dis.

  2. Синтаксис Python. Области видимости переменных.

  3. ООП и объектная модель Python.

    1. Семантика Python.

    2. Использование модуля inspect для анализа объектов.

  4. Система импорта Python. Импорт модулей и пакетов. Использование модуля importlib.

  5. Работа с памятью в Python. Доступ к сборщику мусора через модуль gc.

ООП в Python. Структурная типизация.

  1. ООП. Создание интерфейсов и абстрактных классов с модулем abc.

  2. Протоколы и структурная типизация с модулем typing. Статическая проверка типов с mypy.

  3. Контекстные менеджеры.

  4. Создание перечислений с модулем enum.

  5. Датаклассы в Python.

  6. Дескрипторы Python.

Функциональное программирование в Python. Коллекции и дата-классы

  1. Функциональное программирование в Python.

  2. Итераторы и коллекции. Модули itertools и collection.

  3. Функциональное программирование c модулем functools.

  4. Декораторы функций и классов.

  5. Создание дата-классов с помощью декоратора @dataclass.

  6. Генерация и обработка исключений.

Разработка приложений и библиотек. Создание консольных приложений. Инструменты стандартной библиотеки.

  1. Логирование с модулем logging

  2. Генерация скрипта для консольной оболочки ОС с помощью setuptools

  3. Парсинг аргументов командной строки с модулем argparse

  4. Создание консольного приложения с модулем cmd.

  5. Время и дата. Модули datetime, time

  6. Работа с операционной системой через модули os, sys и shutil. Запуск дочерних процессов с модулем subprocess

Работа с файловой системой

  1. Работа с путями с помощью модуля pathlib

  2. Модуль io

  3. Использование модуля tempfile для создания временных файлов

  4. Системы конфигурация HYDRA и OmegaConf

  5. Модуль appdirs

Форматы данных и файлов. Сериализация/Дессераилизацияю

Текстовые данные и файлы.

  1. Строки: модули string и template, f-strings.

  2. Форматирование таблиц с модулем tabulate

  3. Формат CSV и модуль csv

  4. Формат JSON, валидация с помощью JSOM Schema и модули json, jsonschema, json-schema-for-humans

  5. Формат XML и модули xml, lxml

  6. YAML

  7. Работа с архивами с модулями zipfile и tarfile

  8. Последовательная обработка нескольких файлов с помощью модуля fileinput

  9. Numpy IO: работа с текстовыми файлами

  10. Шаблонизатор jinja2

  11. Чтение данных с помошью Pandas

Бинарные данные и файлы.

  1. Типа данных bytes

  2. Чтение Си-структур с помощью модуля struct

  3. Numpy nd-arrays

  4. Numpy IO: файлы форматов NPY и NPZ

  5. Парсинг выражений с модулем numexp

  6. Консервация объектов. Модули pickle и shelve

  7. Формат Google Protobuff

  8. Memory mapping и модуль mmap

  9. Common Data Model

  10. Чтение файлов CERN ROOT с помощью модуля uproot

  11. Профилировка с модулем profile

Многопоточное, асинхронное и параллельное исполнение. GIL

  1. Вытесняющая многозадачность и модуль threading

  2. Кооперативная многозадачность и модуль asyncio

  3. Параллельное исполнение с модулем multyprocessing

Сетевое программирование и WEB

  1. Сокеты. UPD и TCP. Модули socket и socketserver

  2. HTTP. Модули http и request

  3. HTML. GET и POST запросы. .

  4. Асинхронный сервер с asyncio

  5. Построение графиков с plotly и bokeh

  6. WEB-фреймворки: Tornado, Flask, Django, aiohttp, FastAPI

Graphical User Interface

  1. Создание графических приложений с tkinter и PySide

  2. Events, signal and slots. Observable property.

  3. Models and Views. Файловый менеджер как пример MVC.

  4. Matplotlib и его интеграция с GUI

  5. Конфигурация GUI приложений

Базы данныx

  1. СУБД и ACID. DBM. DB API v2.0. SQLite. ORM, CRUD и SQLAlchemy

Взаимодействие с нативным кодом и оборудованием

  1. Взаимодействие с нативным кодом и оборудованием: Python.h, ctypes, cffi, Cython, Сборка нативных артефактов в setuptools

  2. Взаимодействие с нативным кодом: Numba, SWIG, Boost.Python, Embedded Python. PyROOT и G4Py как примеры.

  3. Работа с оборудованием и драйверами. Подключение Си-драйвера через ctypes. HID, FTD32, USB. Модули pyusb, pyserial, pyftdi, pylibftdi. Arduino.