Курс по Python — от нула до програма, която проверява много услуги едновременно

Езици и бекендНачално ниво

От Dorian Chávez, основател на Hábil и архитект на интеграции. Така обучаваме тези, които изграждат системи, които не могат да се провалят.

За кого е: за този, който никога не е програмирал, или е копирал скриптове, които работят, без да знае защо. Не се предполага нищо: нито че имаш инсталиран Python, нито че знаеш какво е виртуална среда. Всяко понятие се обяснява, когато се появи, и се обяснява защо съществува, а не само как се пише.

Какво ще умееш накрая: да напишеш цялостна програма, с тестове и няколко задачи едновременно, да разбираш това, което си написал, и да можеш да го обясниш на някой друг. И да изградиш преценка, за да четеш сам документацията на Python, което е истинското изпитание.

Къде продължава: същият проблем, revisor, е решен в нашите курсове по Go, Rust и TypeScript. Когато завършиш този, да сравниш своето решение с техните учи повече, отколкото да започнеш от нулата.

Какво ти трябва, преди да започнеш: компютър с Linux Mint и да умееш да отваряш терминал. Нищо повече. Урок 1 подготвя всичко от нулата.

Проектът, който ще изградиш

revisor: програма за команден ред, която получава списък от услуги, проверява всички едновременно и връща отчет в таблица или в JSON.

$ revisor --config servicios.toml --formato tabla
SERVICIO    ESTADO    TIEMPO  DETALLE
catalogo    ARRIBA     160ms  200
inventario  LENTO       2.3s  200
pagos       ARRIBA      90ms  200
reportes    CAIDO          —  sin conexión

4 servicios · 2 arriba · 1 lento · 1 caído · promedio 852ms

Започва в урок 2 със заглавие и една-единствена услуга и расте във всеки урок, докато стане пакет, който се инсталира като всяка друга команда. Изглежда малък и не е: за да го напишеш добре, са ти нужни функции, колекции, грешки, файлове, тестове, типове, HTTP и едновременни задачи.

Дванадесетте урока

Урок Какво изграждаш Какво научаваш
0 Какво е Python и какво НЕ е още нищо (четене) интерпретатор и bytecode; динамично, но строго типизиране; анотациите не се налагат; GIL; виртуални среди; версии
1 Инсталиране на Python на твоя Linux Mint средата и първият ти скрипт python3 на системата; externally-managed-environment; venv; pip; REPL; първият traceback
2 Стойности, текст и решения заглавието на revisor и класифицирането на една услуга три понятия: числа, низове, булеви стойности и None; f-strings; if/elif/else и отстъпите
3 Цикли, функции и модули функцията revisar() и обхождането на списъка for, while; == срещу is; def; област на видимост; изменяемият аргумент по подразбиране; import; __main__
4 Колекции revisor без паралелни списъци: данните на всяка услуга, заедно list, dict, tuple, set; изрази за построяване (comprehensions); копие срещу препратка; KeyError и IndexError
5 Моделът на данните моделът Servicio / Estado и отчетът с неговото обобщение dataclass; Enum; match и case
6 Грешки, файлове и данни отвън четенето на конфигурацията try/except; как се чете traceback; with; pathlib; UTF-8; json и tomllib; валидиране; без eval и pickle
7 Пакет с команден ред revisor като пакет pyproject.toml; python -m revisor; argparse; кодове на изход (exit codes); редактируема инсталация с pip; uv като незадължителна рамка
8 Тестове, типове и качество revisor с тестове pytest и таблица от случаи; tmp_path; monkeypatch; постепенно типизиране с mypy; ruff
9 HTTP и asyncio revisor, който проверява истински urllib и httpx; времеви лимити (timeout); async и await; asyncio.run
10 Съвместно изпълнение с ограничения и тестове без мрежа revisor, който работи едновременно и е тестван TaskGroup; timeout; Semaphore; групи от изключения; симулирана мрежа в тестовете
11 Завършената програма пълният revisor, който се инсталира отчет в таблица и JSON; logging; сигурност; изграждане и инсталиране с pipx

В края на всеки урок има упражнения с техните решения и раздел „За допълнително четене“; източниците на това, което се твърди, са свързани в текста, там където се използват. А дневникът е твой: записвай там това, което ти е костало усилие.

За по-нататъшно четене: в блога на Hábil, тестове, които хващат грешки и сигурност на API. А в курсовете: ако вече умееш да програмираш и искаш съвременна Java, виж курса по Java.

Три критерия, които минават през целия курс

Грешката е съдържание, а не злополука. Всеки урок нарочно предизвиква грешката, която ще видиш, показва истинския traceback и учи как да се чете, от последния ред нагоре. Да умееш да четеш грешка е половината от това да умееш да програмираш.

Средата е истинска. Работи се на Linux Mint с Python, който системата носи, и с нейните правила, а не в тетрадка в браузъра. Целият код работи на Python 3.14 и също на 3.12, който е този на Mint.

Тестовете и сигурността не са уроци, а навици. Данните отвън се валидират в урок 6, тестовете идват в урок 8 и един тест не се брои, докато не си го видял да се проваля, а адресът, който някой напише във файл, се третира като това, което е, в уроци 9 и 11.

Как разбираш, че си завършил

Курсът не свършва, когато си прочел урок 11, а когато твоят revisor изпълнява тези седем неща:

  1. pytest завършва зелено и отчетът казва колко теста са се изпълнили. Преброй ги от отчета, не от кода на изход (exit code): зелено с нула теста изглежда същото като истинско зелено.
  2. ruff check и ruff format --check не докладват нищо, и mypy също.
  3. Проверява 20 услуги едновременно за време, близко до това на най-бавната, а не до сбора на всички. Измерваш го ти, с часовник, последователно и паралелно.
  4. Паднала, бавна или връщаща боклук услуга не събаря отчета: появява се на своя ред със своята грешка, а останалите излизат пълни.
  5. Никоя заявка не може да чака вечно: всички имат времеви лимит (timeout).
  6. Работи еднакво на Python 3.14 и на 3.12 от твоя Mint.
  7. Инсталира се с pipx install и revisor --help работи от друга папка. Излиза с код 0, ако всичко работи, и с 1, ако не е така.

Уроци

  1. Урок 0 — Какво е Python и какво НЕ е
  2. Урок 1 — Инсталиране на Python на твоя Linux Mint
  3. Урок 2 — Стойности, текст и решения
  4. Урок 3 — Цикли, функции и модули
  5. Урок 4 — Колекции
  6. Урок 5 — Моделът на данните
  7. Урок 6 — Грешки, файлове и данни отвън
  8. Урок 7 — Пакет с команден ред
  9. Урок 8 — Тестове, типове и качество
  10. Урок 9 — HTTP и asyncio
  11. Урок 10 — Съвместно изпълнение с ограничения и тестове без мрежа
  12. Урок 11 — Завършената програма