Цель: овладеть продвинутыми умениями и навыками программирования на Python.
Курс предназначен для тех, кто имеет основы разработки на Python.
Продолжительность курса: 5 дней (40 часов).
Форма обучения: вечерняя группа онлайн/очно.
Специальная обучающая программа построена по правилу «80/20», то есть 20% времени придется на лекционный материал, а 80% — на лабораторные работы.
СОДЕРЖАНИЕ ПРОГРАММЫ
Модуль 1. Опции
- Типы данных
- Встроенные контейнеры
- Операторы контроля выполнения
- Обработка ошибок (try...except...)
- Операторы циклов
- Comprehensions (list, dict, set)
- Создание функции и процедур
- Аргументы функций
- Рекурсивные функции
- Functors, Currying
- Декораторы
- Lambda-функции
- PEP8
Модуль 2. Объектно-ориентированный подход
- Объявление класса и создание экземпляра
- Принципы ООП (подражание, инкапсуляция, полиморфизм) в Python
- бласть видимости (Namespaces, Scope, правило LEGB)
- Метод Resolution Order (MRO)
- Магические методы
- Определение математических операций для объектов Python
- Определение операций сравнения для объектов Python
- Определение операций хеширования для объектов Python
- Создание копии экземпляра класса, deep copy, shallow copy
- Инкапсуляция (Setters and getters)
Модуль 3. Управление созданием экземпляров класса Doc strings
- Meta-классы
- Abstract Bases-классы, __new__, __init__
- Context-managers
- Использование декораторов с классами
- Контейнеры, созданные путём подражания (UserList, UserDict, UserString)
- Контейнеры созданы путём агрегации
- Методы доступа к элементам контейнера
- Iterators, Generators
Модуль 4. Приемы объектно-ориентированного программирования
- Software Engineering как процесс
- Язык UML
- Принципы SOLID
- Метрики качества кода
- Design Patterns (категории, примеры использования)
- Singletone
- Facade
- Interface
- Proxy
- Abstract Factory
- Factory Method
- Command
- Observer
Модуль 5. Модули и пакеты
- Разработка модулей (определение и запуск)
- Система импорта
- Разработка повторно используемых пакетов
- Менеджер пакетов pip и виртуальные среды virtualenv
- py
- Написание документации к пакету, модулю
- Создание программ на основе пакетов
Модуль 6. Работа с файлами
- Работа с системой контроля версий Git
- Форматирование строк
- Context-managers
- Работа с файловой системой (os, os.path, shutil)
- Сериализация с помощью pickle
- Управление порядком сериализации/десериализации объектов Python
- Сериализация данных в json
- Сериализация данных в xml
Модуль 7. Интегрированные пакеты Python
- Работа с datetime и calendar
- Работа с collections (очереди, именуемые кортежи, вложенные словари)
- Работа с heapq, array, enum
- Работа с числовыми данными (numbers, math, decimal, random)
- Работа с contextlib
- Работа с functools
- Logging
- Unittest
Модуль 8. Networking
- Sockets (основы работы, примеры серверов)
- Socket server
- Socket Client
- HTTP
- HTML, парсинг HTML-файлов
- XML
Модуль 9. Многопоточность в Python Global Interpreter Loc (GIL)
- Создание потоков в Python
- Контроль доступа к ресурсам
- Синхронизация потоков
- Создание потоков с помощью пакета concurent
- Пул потоков
Модуль 10. Процессы в Python
- Пакет multiprocessing
- Interprocess communication
- Очереди задач
- Создание процессов с помощью пакета concurent
- Пул процессов
- Отсрочка задач с помощью пакета sched
Модуль 11. Асинхронное программирование Asyncio
- Пакет Twisted
- Асинхронный фреймворк Aiohttp
- Сбор данных с помощью фреймворка Scrapy
Модуль 12. SQL
- Основы реляционных баз данных
- ER-диаграммы
- Стандарт PEP249
- Работа с СУБД SQLite, PostgreSQL
- Основы языка SQL (SELECT, LIKE, ORDER BY, LIMIT)
- INSERT
- UPDATE
- DELETE
- JOIN (INNER, LEFT, OUTER)
- GROUP BY
- Функции SQL (mean, min, max, avg, count)
- Subqueries
Модуль 13. Object Relational Mapping
- Основы работы с SQLAlchemy
- Механизм сессий в SQLAlchemy
- Создание базы данных с помощью моделей SQLAlchemy
- Миграции баз данных с помощью Alembic
Модуль 14. NoSQL базы данных
- CAP теорема
- Типы NoSQL баз данных
- Работа с Redis
- Работа с Memcached
- Работа с MongoDB
- Брокер сообщений RabbitMQ
- Основы работы с Celery
Модуль 15. Web-розробка
- Классификация web frameworks
- Язык шаблонов Jinja2
- Основы API
- Стандарты API (REST, XML-RPC, Swagger, JSON API)
- Архитектурный подход API First
- Основы работы с Flask