Опис курсу
Цей курс призначений для програмістів, які хочуть освоїти техніку програмування на мові Python. Программа також буде корисною вже кваліфікованим користувачам. Курс побудований за принципом: 20% лекційного матеріалу, 80% -лабораторні роботи.
Цілі курсу
Отримати вміння з самостійної розробки курсів мовою Python
Зміст курсу
Mодуль1: Функції.
- Типи даних
- Вбудовані контейнери
- Оператори контролю виконання
- Обробка помилок (try ... except ...)
- Оператори циклів
- Comprehensions (list, dict, set)
- Створення функції і процедур
- Аргументи функцій
- Рекурсивні функції
- Functors, Currying
- Декоратори
- Lambda-функції
- PEP8
Mодуль 2: Об'єктно-орієнтований підхід
- Оголошення класу та створення екземпляру
- Принципи ООП (наслідування, інкапсуляція, поліморфізм) в Python
- Область видимості (Namespaces, Scope, правило LEGB)
- Method Resolution Order (MRO)
- Магічні методи
- Визначення математичних операцій для об’єктів Python
- Визначення операцій порівняння для об’єктів Python
- Визначення операцій хешування для об’єктів Python
- Створення копії екземпляру класу, deep copy, shallow copy
- Інкапсуляція (Setters and getters)
Mодуль 3: Управління створенням екземплярів класу
- Doc strings
- Meta класи
- Abstract Bases класи
- __new__
- __init__
- Context-managers
- Використанням декораторів з класами
- Контейнери, створені шляхом успадкування (UserList, UserDict, UserString)
- Контейнери, створені шляхом агрегації
- Методи доступу до елементів контейнера
- Iterators, Generators
Mодуль 4: Прийоми об'єктно-орієнтованого програмування Software Engineering як процес
- Мова UML
- Принципи SOLID
- Метрики якості коду
- Design Patterns (категорії, приклади використання)
- Singletone
- Facade
- Interface
- Proxy
- Abstract Factory
- Factory Method
- Command
- Observer
Mодуль 5: Модулі та пакети
- Розробка модулів (визначення та запуск)
- Система імпортування
- Розробка повторно використовуваних пакетів
- Менеджер пакетів pip і віртуальні середовища virtualenv
- Setup.py
- Написання документації до пакету, модуля
- Створення додатків на основі пакетів
Mодуль 6: Робота з файлами
- Робота з системою контролю версій Git
- Форматування рядків
- Context-managers
- Робота з файловою системою (os, os.path, shutil)
- Серіалізація за допомогою pickle
- Управління порядком серіалізації/десеріалізації об’єктів Python
- Серіалізація даних в json
- Серіалізація даних в xml
Mодуль 7: Вбудовані пакети Python.
- Робота з datetime та calendar
- Робота з collections (черги, іменовані кортежі, вкладені словники)
- Робота з heapq, array, enum
- Робота з числовими даними (numbers, math, decimal, random)
- Робота з contextlib
- Робота з functools
- Logging
- Unittest
Mодуль 8: Networking
- Sockets (основи роботи, приклади серверів)
- Socket server
- Socket Client
- HTTP
- HTML, парсинг HTML-файлів
- XML
Mодуль 9: Багатопотчність в Python
- Global Interpreter Loc (GIL)
- Створення потоків в Python
- Контроль доступу до ресурсів
- Синхронізація потоків
- Створення потоків за допомогою пакету concurent
- Пул потоків
Mодуль 10: Процеси в Python
- Пакет multiprocessing
- Interprocess communication
- Черги завдань
- Створення процесів за допомогою пакету concurent
- Пул процесів
- Відтермінування задач за допомогою пакету sched
Mодуль 11: Асинхронне програмування
- Asyncio
- Пакет Twisted
- Асинхронний фреймворк Aiohttp
- Збір даних за допомогою фреймворку Scrapy
Mодуль 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
Mодуль 13: Object Relational Mapping
- Основи роботи з SQLAlchemy
- Механізм сессій в SQLAlchemy
- Створення бази даних за допомогою моделей SQLAlchemy
- Міграції баз даних за допомогою Alembic
Mодуль 14: NoSQL Бази даних
- CAP теорема
- Типи NoSQL баз даних
- Робота з Redis
- Робота з Memcached
- Робота з MongoDB
- Брокер повідомлень RabbitMQ
- Основи роботи з Celery
- Mодуль 15: Web розробка
- Класифікація web frameworks
- Мова шаблонів Jinja2
- Основи API
- Стандарти API (REST, XML-RPC, Swagger, JSON API)
- Архітектурний підхід API First
- Основи роботи з Flask