Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python — база знаний

Конспекты по Python и бэкенду: 219 заметок, от синтаксиса до деплоя. Каждая заметка — самостоятельный разбор темы «от простого к сложному», с примерами кода, разбором типичных ошибок и списком источников в конце: официальная документация, PEP, спецификации и книги.

Заметки связаны между собой ссылками — переходить можно прямо по тексту. Всё на русском.

Материал вырос из личного хранилища Obsidian, поэтому изложение — от первого лица к читателю, а не сухая документация. Часть ссылок ведёт на темы за пределами этого репозитория (SQL, сети, архитектура) — они оставлены обычным текстом.

С чего начать

Три коротких входа — на случай, если читать всё подряд не нужно.

Если готовишься к собеседованию

Вопросы с собеседований · Хеш-таблица · Управление памятью в Python · CPU-bound против IO-bound · Декораторы Python · Магические методы Python · SOLID Python · Шпаргалка — шаблоны алгоритмов · Проектирование систем (system design) · Вопросы про опыт и мотивацию

Если уже пишешь на Python и нужен бэкенд

WSGI и ASGI — интерфейс сервера и приложения · FastAPI · pydantic · SQLAlchemy · Аутентификация — методы и протоколы · JWT — подпись и проверка токенов · pytest · Redis · Docker · Развертывание проекта

Если пришёл за конкретным модулем

typing · functools · collections · re · pathlib · json · logging · argparse

Порядок чтения

Полный маршрут с нуля. Внутри ступени заметки идут в том порядке, в каком они друг на друга опираются; ступени можно проходить подряд.

1. Что такое Python и как он устроен

Начать стоит с того, как язык исполняется: без этого «почему медленно» и «почему объект» останутся магией.

Python · Zen of Python

2. Синтаксис — минимум, чтобы писать код

Порядок здесь не случайный: каждая следующая заметка опирается на предыдущую.

Синтаксические конструкции Python · Операторы Python · Ветвление Python · Циклы Python · Функции Python · Match Case Python · Константы в Python · Обработка ошибок Python · Ошибки Python · Работа с файлами Python · Модули и пакеты Python · Стиль кода Python — PEP 8 и Google Style Guide · Ловушки Python

3. Данные — типы, АТД, структуры

Сначала типы самого языка, затем абстракции (что умеет), затем структуры (как устроено внутри и сколько стоит).

Примитивные типы данных Python · Составные типы данных Python · Специальные типы данных Python · Список · Словарь · Множество и кортеж · Стек · Очередь · Массив · Хеш-таблица · Связный и двусвязный список · Дерево · Граф · Список с пропусками · Работа с форматами данных в Python

4. Язык глубже

То, что отличает «пишу на Python» от «понимаю Python». Отсюда же начинаются вопросы на собеседовании.

Декораторы Python · Декоратор с состоянием · Магические методы Python · Управление памятью в Python · Метаклассы Python · Стандартные потоки — stdin, stdout, stderr · Лексикографический порядок · Разворачивание вложенных списков (flatten) Python · Линтеры и форматтеры

5. ООП — принципы, потом паттерны

Паттерны без принципов превращаются в зубрёжку. Сначала четыре принципа и SOLID, затем каталог.

Принципы ООП в Python · Абстракция Python · Инкапсуляция Python · Наследование Python · Полиморфизм Python · Моделирование — что попадает в класс · SOLID Python · SOLID на практике — рефакторинг сервиса · Принципы разработки — DRY, KISS, DI · Композиционный корень · UML — диаграммы · Паттерны проектирования · Порождающие паттерны · Структурные паттерны · Паттерны поведения · Паттерны в практике — Lexi · Справочник — глоссарий и нотация

6. Стандартная библиотека

Читать подряд не нужно — это справочник. Пройти стоит по группам, когда упёрся в задачу; полный список в карте.

typing · dataclass · functools · itertools · collections · pathlib · re · logging

7. Алгоритмы

Стратегия решения → конкретные алгоритмы → приёмы, которые повторяются в задачах.

Итерация · Рекурсия · Разделяй и властвуй · Жадные алгоритмы · Динамическое программирование · Поиск с возвратом · Пузырьком · Выбором · Вставками · Слиянием · Быстрая · BFS · DFS · Алгоритм Дейкстры · Два указателя · Скользящее окно · Префиксные суммы · Мемоизация · Шпаргалка — шаблоны алгоритмов

8. Параллелизм и асинхронность

Ключевая развилка — CPU-bound против IO-bound: от неё зависит, нужен вам поток, процесс или корутина.

CPU-bound против IO-bound · threading · multiprocessing · concurrent.futures · queue · Asyncio Event Loop и aiohttp · Блокирующий код в event loop · Асинхронная работа с файлами · Декораторы для асинхронных функций

9. Веб — от протокола до фреймворка

Сначала интерфейс между сервером и приложением, потом сам фреймворк. Ветки FastAPI и Django независимы — можно читать любую.

WSGI и ASGI — интерфейс сервера и приложения · requests · pydantic · FastAPI · Depends — зависимости в FastAPI · REST API на FastAPI · Тестирование FastAPI-приложений · FLASK · Django · ORM Django · API · CRUD В DRF · Кастомная модель User · Разделение доступа в DRF · Сигналы Django · Django с многими приложениями · Тестирование Django приложений · SQLAlchemy · psycopg2

10. Безопасность

Порядок от общего к частному: кто ты → как хранится пароль → чем подтверждается сессия.

Аутентификация — методы и протоколы · Пароли — хранение и проверка · JWT — подпись и проверка токенов · Oauth 2.0 · Веб-безопасность · HTTPS и обмен ключами Диффи — Хеллмана

11. Тестирование

Юнит-тестирование Python · pytest · Интеграционные тесты и testcontainers · Нагрузочное тестирование — locust и k6

12. Кэш, очереди, данные

Redis · RabbitMQ · Celery · Airflow · numpy · pandas

13. DevOps — довести до прода

От «работает у меня» до «работает и видно, что происходит».

Docker · Docker Compose — несколько окружений · Работа с сервером · nginx · Развертывание проекта · CI CD · Jenkins · Kubernetes · Terraform · Наблюдаемость — метрики, логи, трейсы · Prometheus и Grafana · Sentry

14. Инженерная культура

Код-ревью · Рефакторинг · Проектирование систем (system design)

15. Собеседование

Вопросы с собеседований · Вопросы про опыт и мотивацию

Полная карта

КореньPython · WSGI и ASGI — интерфейс сервера и приложения · Аутентификация — методы и протоколы · Пароли — хранение и проверка · JWT — подпись и проверка токенов · Веб-безопасность · Проектирование систем (system design) · Код-ревью · Рефакторинг · Вопросы с собеседований · Вопросы про опыт и мотивацию

Ядро языка

Match Case Python · Zen of Python · Ветвление Python · Декоратор с состоянием · Декораторы Python · Декораторы для асинхронных функций · Константы в Python · Лексикографический порядок · Линтеры и форматтеры · Ловушки Python · Магические методы Python · Метаклассы Python · Модули и пакеты Python · Обработка ошибок Python · Операторы Python · Ошибки Python · Работа с файлами Python · Разворачивание вложенных списков (flatten) Python · Синтаксические конструкции Python · Стандартные потоки — stdin, stdout, stderr · Стиль кода Python — PEP 8 и Google Style Guide · Управление памятью в Python · Функции Python · Циклы Python

Данные

Примитивные типы данных Python · Работа с форматами данных в Python · Составные типы данных Python · Специальные типы данных Python

АТДМножество и кортеж · Очередь · Словарь · Список · Стек

Структуры данныхГраф · Дерево · Массив · Связный и двусвязный список · Список с пропусками · Хеш-таблица

ООП

UML — диаграммы

ПаттерныПаттерны в практике — Lexi · Паттерны поведения · Паттерны проектирования · Порождающие паттерны · Справочник — глоссарий и нотация · Структурные паттерны

ПринципыSOLID Python · SOLID на практике — рефакторинг сервиса · Абстракция Python · Инкапсуляция Python · Композиционный корень · Моделирование — что попадает в класс · Наследование Python · Полиморфизм Python · Принципы ООП в Python · Принципы разработки — DRY, KISS, DI

Алгоритмы

Шпаргалка — шаблоны алгоритмов

ЗадачкиLRU-кэш · Кратчайший путь (BFS) · Проектирование связного списка · Ход конём

ИныеHTTPS и обмен ключами Диффи — Хеллмана · HyperLogLog · PageRank · Двоичная куча и очередь с приоритетом · Инвертированный индекс · Контрольная цифра и алгоритм Луна · Линейная регрессия · Локально-чувствительное хеширование (SimHash) · Параллельные алгоритмы · Преобразование Фурье · Фильтр Блума

ПоискBFS · DFS · KNN · Алгоритм Беллмана — Форда · Алгоритм Дейкстры · Код Хаффмана

ПриёмыАлгоритм Кадане · Битовые приёмы · Два указателя · Интервалы · Мемоизация · Монотонный стек · Обход клетчатого поля · Префиксные суммы · Скользящее окно · Стресс-тестирование · Фиктивный узел · Циклическая сортировка

СортировкаБыстрая · Вставками · Выбором · Подсчётом · Поразрядная · Пузырьком · Слиянием

СтратегииВетви и границы · Динамическое программирование · Жадные алгоритмы · Итерация · Линейная оптимизация · Поиск с возвратом · Разделяй и властвуй · Рандомизированные алгоритмы · Рекурсия

Стандартная библиотека

Безопасность и интернетemail · hashlib · secrets · ssl · uuid

Дата и времяdatetime · time

Коллекции и структуры данныхarray · bisect · collections · heapq

Отладка и утилитыcontextlib · logging · pprint · Профилирование и отладка

ПараллелизмAsyncio Event Loop и aiohttp · CPU-bound против IO-bound · concurrent.futures · multiprocessing · queue · threading · Асинхронная работа с файлами · Блокирующий код в event loop

Работа с файламиglob · io · os · pathlib · shutil · tempfile · zipfile

Работа с числамиdecimal · math · random · statistics

Система и окружениеargparse · sys · venv

Текст и строкиre · string

Типы и объектыabc · copy · dataclass · enum · typing

Форматы данныхbase64 · csv · json · pickle · sqlite3 · struct

Функциональные инструментыfunctools · itertools · operator

Сторонние библиотеки

СторонниеAirflow · Celery · RabbitMQ · Redis · numpy · pandas · pydantic

ORMSQLAlchemy

Работа с WEBBeautifulSoup · Grab · GraphQL · Oauth 2.0 · SOAP · Selenium · requests · Вебхуки (webhooks)

Работа с БДpsycopg2

Тестыpytest · Интеграционные тесты и testcontainers · Нагрузочное тестирование — locust и k6 · Юнит-тестирование Python

Фреймворки

Depends — зависимости в FastAPI · FLASK · FastAPI · REST API на FastAPI · aiogram · discord.py · Тестирование FastAPI-приложений

DJANGOAPI · CRUD В DRF · Django с многими приложениями · Django · ORM Django · Кастомная модель User · Разделение доступа в DRF · Сигналы Django · Тестирование Django приложений

DevOps

CI CD · Docker Compose — несколько окружений · Docker · Jenkins · Kubernetes · Prometheus и Grafana · Sentry · Terraform · nginx · Наблюдаемость — метрики, логи, трейсы · Работа с сервером · Развертывание проекта

Лицензия

Тексты — CC BY 4.0: пользуйтесь, копируйте, переделывайте, укажите источник. Примеры кода — делайте с ними что хотите.

About

A knowledge base about Python, compiled by me from various sources.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors