Мета: опанувати просунуті вміння та навички програмування на Python.
Курс призначений для тих, хто вже має основи розробки на Python.
Тривалість курсу: 5 днів (40 годин).
Форма навчання: вечірня група онлайн / очно.
Спеціальна навчальна програма побудована за правилом «80/20», тобто 20% часу прийдеться на лекційний матеріал, а 80% — на лабораторні роботи.
ЗМІСТ ПРОГРАМИ
Модуль 1. Опції
- Типи даних
- Вбудовані контейнери
- Оператори контролю виконання
- Обробка помилок (try...except...)
- Оператори циклів
- Comprehensions (list, dict, set)
- Створення функції та процедур
- Аргументи функцій
- Рекурсивні функції
- Functors, Currying
- Декоратори
- Lambda-функції
- PEP8
Модуль 2. Об'єктно-орієнтований підхід
- Оголошення класу та створення екземпляра
- Принципи ООП (наслідування, інкапсуляція, поліморфізм) у Python
- Область видимості (Namespaces, Scope, правило LEGB)
- Method 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