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