Artykuły

Dłuższe teksty techniczne, w których biorę jeden temat i rozbieram go od podstaw do działającego kodu. Są przeglądy, przewodniki po narzędziach i jeden program przeczytany linijka po linijce dla kogoś, kto nigdy nie programował.

Zrozumieć od zera program budzet.py

17 września 2026 30 min czytania

Gdyby w metodzie suma przesunąć return razem o cztery spacje w prawo, raport pokazałby „Razem: 6.5 zł”, a Python nie zgłosiłby żadnego błędu. To jeden z drobiazgów, na które trafiłem, rozbierając od zera krótki program budzet.py, czyli domowy budżet z chlebem, biletem miesięcznym i serem.

Więcej

Artykuł idzie linijka po linijce: wcięcia, nazwy, argumenty pozycyjne i nazwane, skąd się bierze self i dlaczego __init__ musi się tak nazywać, słownik i .items(), a na końcu None z funkcji bez return. Trochę jak z border 0 na ZX Spectrum, każde polecenie robi jedną konkretną rzecz i da się to prześledzić. Dla początkujących to wejście w Pythona na jednym przykładzie. Dla tych, co piszą od lat, raczej sprawdzian, czy umieją to komuś wyjaśnić (ja przy okazji znalazłem podwójne liczenie sumy i zostawiłem, jak jest).

Wzorce projektowe GoF okiem programisty Pythona: co zostaje, a co znika

3 września 2026 51 min czytania

Na jednej rozmowie kwalifikacyjnej, między pracami, padło pytanie, jakie wzorce projektowe znam, i była pustka. Używałem ich od lat, tylko nie umiałem ich nazwać. Po rozmowie zrobiłem sobie notatki z nazwami i przykładami, a z tych notatek w końcu wyrósł artykuł.

Więcej

Przechodzę w nim przez katalog GoF i przy każdym wzorcu zestawiam wersję z książki z tym, co z niej zostaje w Pythonie. Adapter, Composite i Template Method przechodzą prawie bez zmian. Strategy, Command i Visitor sprowadzają się do funkcji przekazanej jako argument, functools.partial i singledispatch. Singleton to w praktyce zwykły moduł (a przy wątkach threading.local). Przy okazji jest sporo pułapek, np. płytka kopia przy Prototype, __getattr__, przez który przecieka całe API opakowanego obiektu, albo słabe referencje w sygnałach Django.