Курс Python

Джерела

Куди йти, коли треба перевірити деталь або копнути глибше за межі курсу.

← до списку тем

01 / ПершоджерелоОфіційна документація

Головне правило: якщо джерела суперечать одне одному — правда в офіційній документації. Вона ж найшвидше оновлюється, коли в мові щось змінюється.

Офіційна документація Python

Є українською. Найточніше джерело — саме сюди варто йти, коли треба перевірити поведінку.

Підручник Python (tutorial)

Офіційний покроковий вступ від авторів мови.

PEP 8 — стиль коду

Як прийнято форматувати код. Читається за годину, економить роки суперечок.

PEP 20 — Дзен Python

Двадцять рядків про філософію мови. Наберіть import this.

02 / УкраїнськоюПосібники

Путівник мовою програмування Python

Україномовний посібник Г. Мізюка. Ми брали з нього орієнтир для переліку й порядку тем; тексти, приклади та інтерактиви курсу написані самостійно.

03 / ДовідникиІнструменти й бібліотеки

ресурсдля чого
Real PythonГлибокі статті англійською, часто з візуалізаціями
Python TutorПокроково показує, що відбувається в пам'яті
collectionsnamedtuple, черги, лічильники — стандартні структури поверх базових
disДизасемблер байткоду: видно, у що насправді перетворюється рядок коду
TimeComplexity (Python Wiki)Таблиця складності операцій для list, dict, set, deque
CPython · listobject.cВихідний код списку: функція list_resize і формула зростання ємності
CPython · listsort.txtОпис Timsort від автора: чому він стабільний і звідки лінійний час на впорядкованих даних
copyПоверхнева й глибока копія: copy.copy проти copy.deepcopy
Truth Value TestingОфіційний перелік хибних значень і правило __bool__/__len__
Boolean operationsЧому and і or повертають операнд, а не True/False
PEP 636 — підручник з match/caseСтруктурне зіставлення зі зразком: зразки, сторожі, захоплення імен
Defining FunctionsРозділ підручника про def, return і те, чому функція без return віддає None
PEP 257 — докстрінгиДомовленості про докстрінги: що писати в першому рядку й як оформлювати багаторядкові
sys · межа рекурсіїСкільки кадрів вміщує стек викликів і звідки береться RecursionError
venvМодуль віртуальних середовищ: структура теки, pyvenv.cfg, прапорці створення
PEP 668 — externally managed environmentsЗвідки взялася помилка externally-managed-environment і чому дистрибутиви захищають системний Python
pip · посібник користувачаКоманди install, freeze, show і формат requirements.txt
Version specifiersТочні правила для ==, >= і «сумісного релізу» ~=
PEP 621 — метадані в pyproject.tomlСучасний опис проєкту й залежностей замість requirements.txt
pytestДокументація фреймворку тестування
pytest · assertПереписування assert і те, як pytest дістає фактичні значення; pytest.raises
pytest · parametrizeОдин тест на багато наборів даних і як формуються імена в звіті
pytest · фікстуриСпільна підготовка для кількох тестів, yield для прибирання, tmp_path
assert у довіднику мовиЩо саме робить інструкція й чому python -O її прибирає
unittestТестування без сторонніх пакетів: родина методів assertEqual і компанія
datetimeТипи date, time, datetime, timedelta; наївні та обізнані обʼєкти; таблиця кодів strftime
zoneinfoЧасові пояси зі стандартної бібліотеки з 3.9: ZoneInfo, пошук бази IANA, пакет tzdata
PEP 615 — IANA-пояси в стандартній бібліотеціОбґрунтування zoneinfo: чому фіксоване зміщення не замінює назву поясу
PEP 495 — локальний час без двозначностіПоле fold: як розрізняють дві однакові години осіннього переходу
Що нового в Python 3.12 · застарілеОголошення datetime.utcnow() і utcfromtimestamp() застарілими
IANA Time Zone DatabaseПершоджерело правил переходу на літній час і історії зміщень для кожної місцевості
RFC 3339Профіль ISO 8601 для міток часу в інтернеті: саме його читає й пише isoformat
argparseРозбір командного рядка: add_argument, type, choices, nargs, підкоманди
Argparse TutorialОфіційний покроковий вступ: від sys.argv до готової утиліти
sys.argv і sys.exitЩо саме потрапляє в argv[0] і що робить sys.exit з рядком замість числа
subprocessЗапуск програм із Python: returncode, capture_output, подача даних на stdin
POSIX · Utility ConventionsЗвідки взялися домовленості про -h, подвійний -- і дефіс замість імені файлу
clickАльтернатива argparse на декораторах: підкоманди, кольори, інтерактивні запити
TyperІнтерфейс командного рядка з анотацій типів функції
open()Повний перелік режимів, аргументи encoding, errors, newline, buffering
pathlibШляхи як обʼєкти: Path, оператор /, .stem/.suffix, glob, mkdir
pathlib ↔ os.pathОфіційна таблиця відповідників: що чим замінюється в старому коді
ioШари файлового обʼєкта, буферизація, TextIOWrapper і flush()
Standard EncodingsПерелік кодувань разом із cp1251, utf-8-sig і псевдонімами
Unicode HOWTOЧому текст — не байти: кодування, декодування, звідки береться UnicodeDecodeError
PEP 597 — EncodingWarningПрапорець -X warn_default_encoding і чому пропущений encoding небезпечний
PEP 686 — UTF-8 за замовчуваннямПлан зробити UTF-8 типовим кодуванням і прибрати залежність від налаштувань системи
tempfilemkdtemp і компанія: де безпечно ставити експерименти з файлами
shutilКопіювання, переміщення й rmtree — операції над теками цілком
Data modelПовний перелік магічних методів: що саме викликає кожен оператор і що метод має повернути
object.__hash__Контракт рівності й хешу: чому визначення __eq__ ставить __hash__ = None
functools.total_orderingДекоратор, що добудовує решту порівнянь з __eq__ і одного методу порядку
Context manager typesТочні правила для __enter__ і __exit__: аргументи про виняток і сенс поверненого значення
PEP 343 — інструкція withОбґрунтування протоколу менеджера контексту й точний розгортання with у try/finally
contextlibМенеджер контексту з функції через @contextmanager, suppress, ExitStack
NumPyДовідник з масивів
pandasРобота з таблицями
MatplotlibПобудова графіків

04 / Версія мовиНа що орієнтуємось

Версія мови, на яку орієнтуємось — Python 3.12 і новіші. Там, де поведінка відрізняється у старіших версіях, це зазначено прямо в темі.