Программа курса
Идеология и инструменты разработки ПО
Инструменты разработки на Python.
Создание виртуальных окружений. Модули
venv
,virtualenv
. Виртуальные окружения conda-env.Сборка пакета с
setuptools
и установка пакета в режиме для разработчика.Тестирование ПО. Модули
unittest
,pytest
. Системы запуска и контроля тестов.Создание документации пакета с помощью
sphinx
.CI/CD. Github Actions.
Интерактивные среды.
Распространения приложений с помощью
setuptools
.
Устройство Python
Трансляторы Python. Байт-код Python и модуль
dis
.Синтаксис Python. Области видимости переменных.
ООП и объектная модель Python.
Семантика Python.
Использование модуля
inspect
для анализа объектов.
Система импорта Python. Импорт модулей и пакетов. Использование модуля
importlib
.Работа с памятью в Python. Доступ к сборщику мусора через модуль
gc
.
ООП в Python. Структурная типизация.
ООП. Создание интерфейсов и абстрактных классов с модулем
abc
.Протоколы и структурная типизация с модулем
typing
. Статическая проверка типов сmypy
.Контекстные менеджеры.
Создание перечислений с модулем
enum
.Датаклассы в Python.
Дескрипторы Python.
Функциональное программирование в Python. Коллекции и дата-классы
Функциональное программирование в Python.
Итераторы и коллекции. Модули
itertools
иcollection
.Функциональное программирование c модулем
functools
.Декораторы функций и классов.
Создание дата-классов с помощью декоратора
@dataclass
.Генерация и обработка исключений.
Разработка приложений и библиотек. Создание консольных приложений. Инструменты стандартной библиотеки.
Логирование с модулем
logging
Генерация скрипта для консольной оболочки ОС с помощью
setuptools
Парсинг аргументов командной строки с модулем
argparse
Создание консольного приложения с модулем
cmd
.Время и дата. Модули datetime,
time
Работа с операционной системой через модули
os
,sys
иshutil
. Запуск дочерних процессов с модулем subprocess
Работа с файловой системой
Работа с путями с помощью модуля pathlib
Модуль io
Использование модуля tempfile для создания временных файлов
Системы конфигурация HYDRA и OmegaConf
Модуль appdirs
Форматы данных и файлов. Сериализация/Дессераилизацияю
Текстовые данные и файлы.
Строки: модули string и template, f-strings.
Форматирование таблиц с модулем tabulate
Формат CSV и модуль csv
Формат JSON, валидация с помощью JSOM Schema и модули json, jsonschema, json-schema-for-humans
Формат XML и модули xml, lxml
YAML
Работа с архивами с модулями zipfile и tarfile
Последовательная обработка нескольких файлов с помощью модуля fileinput
Numpy IO: работа с текстовыми файлами
Шаблонизатор jinja2
Чтение данных с помошью Pandas
Бинарные данные и файлы.
Типа данных bytes
Чтение Си-структур с помощью модуля struct
Numpy nd-arrays
Numpy IO: файлы форматов NPY и NPZ
Парсинг выражений с модулем numexp
Консервация объектов. Модули pickle и shelve
Формат Google Protobuff
Memory mapping и модуль mmap
Common Data Model
Чтение файлов CERN ROOT с помощью модуля uproot
Профилировка с модулем profile
Многопоточное, асинхронное и параллельное исполнение. GIL
Вытесняющая многозадачность и модуль threading
Кооперативная многозадачность и модуль asyncio
Параллельное исполнение с модулем multyprocessing
Сетевое программирование и WEB
Сокеты. UPD и TCP. Модули socket и socketserver
HTTP. Модули http и request
HTML. GET и POST запросы. .
Асинхронный сервер с asyncio
Построение графиков с plotly и bokeh
WEB-фреймворки: Tornado, Flask, Django, aiohttp, FastAPI
Graphical User Interface
Создание графических приложений с tkinter и PySide
Events, signal and slots. Observable property.
Models and Views. Файловый менеджер как пример MVC.
Matplotlib и его интеграция с GUI
Конфигурация GUI приложений
Базы данныx
СУБД и ACID. DBM. DB API v2.0. SQLite. ORM, CRUD и SQLAlchemy
Взаимодействие с нативным кодом и оборудованием
Взаимодействие с нативным кодом и оборудованием: Python.h, ctypes, cffi, Cython, Сборка нативных артефактов в setuptools
Взаимодействие с нативным кодом: Numba, SWIG, Boost.Python, Embedded Python. PyROOT и G4Py как примеры.
Работа с оборудованием и драйверами. Подключение Си-драйвера через ctypes. HID, FTD32, USB. Модули pyusb, pyserial, pyftdi, pylibftdi. Arduino.