Komentarze i Docstringi – Jak rozmawiać z kodem w Pythonie

Wielu początkujących programistów traktuje komentarze jako zło konieczne lub, wręcz przeciwnie, opisuje każdą linijkę kodu. Prawda leży jednak tam, gdzie czystość kodu spotyka się z użytecznością.


Komentarze liniowe (#) – Kiedy "mniej" znaczy "więcej"

Komentarze zaczynające się od # służą do wyjaśniania dlaczego coś zostało zrobione w dany sposób, a nie co robi dany fragment.

❌ Zła praktyka:

x = x + 1  # Dodaj jeden do x 
(Kod sam to mówi)
✅ Dobra praktyka:
# Używamy algorytmu X ze względu na ograniczenia pamięci RAM
(Wyjaśniasz intencję)


Wielolinijkowe napisy, czyli mityczne """ """

Często spotykamy bloki tekstu w potrójnych cudzysłowach. Warto wyjaśnić czytelnikom jedną rzecz:
Python technicznie nie posiada komentarzy wielolinijkowych.

Używamy do tego "string literali", które nie są przypisane do zmiennej. Są świetne do tymczasowego wyłączania bloków kodu, ale w profesjonalnym kodzie do opisów funkcji używamy ich jako Docstringów.


Docstringi – Twoja profesjonalna wizytówka

To jest serce dokumentacji Pythona. Umieszczamy je zaraz pod definicją funkcji, klasy lub modułu.
Dlaczego to jest ważne? Ponieważ Python "widzi" te opisy. Można się do nich dobrać przez atrybut __doc__ lub funkcję help().

Przykład profesjonalnej dokumentacji:

def oblicz_marze(cena_netto, podatek=0.23):
    """
    Oblicza cenę brutto na potrzeby faktur w Kajotte Studio.

    Args:
        cena_netto (float): Kwota bazowa projektu.
        podatek (float): Stawka VAT (domyślnie 0.23).

    Returns:
        float: Cena końcowa zaokrąglona do dwóch miejsc po przecinku.
    """
    return round(cena_netto * (1 + podatek), 2)

Dlaczego warto to robić? (Dla Twoich klientów i zespołu)

Automatyzacja Narzędzia takie jak Sphinx potrafią wyciągnąć Docstringi i stworzyć z nich gotową stronę WWW z dokumentacją Twojego projektu.
Podpowiedzi w IDE Kiedy Ty lub Twój klient zaczniecie pisać nazwę funkcji w PyCharm czy VS Code, edytor sam wyświetli treść Docstringa.
Utrzymanie projektu Kod czyta się znacznie częściej, niż się go pisze. Dobry opis to oszczędność godzin pracy w przyszłości.

Podsumowanie dla czytelnika:

  1.   # – dla szybkich notatek o logice (dlaczego?).
  2.   """ """ – dla dokumentowania struktury (co to robi i jak użyć?).
  3.   Unikaj oczywistości – jeśli kod jest czytelny, komentarz jest zbędny.

Aby wygenerować profesjonalną stronę dokumentacji HTML, używamy narzędzia pdoc

Dla inżynierów i programistów dążących do pełnej automatyzacji workflow, wzorcowy moduł implementujący standardy dokumentacji uznawane przez nowoczesne narzędzia typu Sphinx czy pdoc. Stosowanie spójnego formatu (Google Style) pozwala na generowanie czytelnych manuali technicznych bezpośrednio z kodu źródłowego, co jest kluczowe przy skalowaniu projektów i utrzymaniu wysokiej jakości oprogramowania.

Wzorzec dokumentacji do skopiowania (Licencja MIT):

Źródło: Nazwa:
Centrum Pobierania post_42pl

Instalacja (tylko za pierwszym razem):

pip install pdoc
lub
pip install pdoc && pdoc post_42pl.py -o ./docs

Generowanie dokumentacji:

pdoc post_42pl.py -o ./docs

Ważne: Powyższa komenda utworzy w Twoim projekcie folder docs. Aby zobaczyć gotową stronę, wejdź do tego folderu i otwórz plik post_42pl.html / index.html w dowolnej przeglądarce internetowej. Jeśli chcesz, aby pdoc od razu uruchomił lokalny serwer z podglądem na żywo, użyj komendy:

pdoc post_42pl.py


Dokumentacja wewnątrz kodu: Potencjał funkcji help() i Docstringów

W profesjonalnym procesie wytwarzania oprogramowania dokumentacja nie jest jedynie dodatkiem, lecz integralną częścią kodu. Jednym z najskuteczniejszych sposobów na utrzymanie wysokiej czytelności projektu jest wykorzystanie mechanizmów wbudowanych w język Python – docstringów oraz funkcji help().


1. Funkcja help() – Interaktywne wsparcie programisty

Funkcja help() to wbudowane narzędzie introspekcyjne. Służy do generowania i wyświetlania dokumentacji obiektów w sposób interaktywny. Pozwala na błyskawiczne zapoznanie się ze strukturą modułów, klas czy funkcji bez konieczności opuszczania środowiska programistycznego.

Zastosowanie: Wywołanie funkcji help(nazwa_obiektu) powoduje odczytanie przypisanych do niego metadanych i wyświetlenie ich w czytelnej formie w strumieniu wyjściowym.
Kiedy używać: Narzędzie to jest niezastąpione w fazie debugowania, podczas nauki nowych bibliotek oraz w systemach edukacyjnych, gdzie zrozumienie przeznaczenia danej funkcji jest kluczowe dla użytkownika końcowego.

2. Implementacja w SAKS

W ramach projektu Kajotte Studio – w module SAKS (System Autostart Kajotte Studio) – mechanizm ten został wykorzystany do stworzenia autonomicznego systemu informacyjnego. Zamiast polegać na zewnętrznych plikach tekstowych, kluczowe informacje o wersji, dacie modyfikacji i przeznaczeniu skryptu są zaszyte bezpośrednio w kodzie źródłowym.

Poniższy przykład obrazuje, jak w prosty sposób można wymusić wyświetlenie dokumentacji przy inicjalizacji modułu:

def docinfo_index_html():
    """
    System Autostart Kajotte Studio
    Moduł SAKS: 2026-05-12
    Status: Aktywny
    Opis: Skrypt odpowiedzialny za generowanie struktury index.html.
    """
    pass

# Wyświetlenie dokumentacji w konsoli podczas uruchamiania
print(help(docinfo_index_html))

3. Mechanizm działania i korzyści

Zastosowanie potrójnych cudzysłowów (""") bezpośrednio pod definicją funkcji tworzy tzw. docstring. Python automatycznie przypisuje ten tekst do atrybutu __doc__ danego obiektu. Funkcja help() wywołuje ten atrybut, formatując go w sposób przejrzysty dla odbiorcy.

Zalety takiego rozwiązania:

Integralność: Kod i opis jego działania znajdują się w jednym miejscu, co ułatwia aktualizację informacji.
Minimalizm techniczny: Wyeliminowanie potrzeby stosowania zewnętrznych systemów pomocy dla prostych modułów narzędziowych.
Skalowalność: Poprawnie sformatowane docstringi są fundamentem dla narzędzi takich jak Sphinx, które potrafią automatycznie generować zaawansowane strony dokumentacji technicznej w formacie HTML lub PDF.

Takie podejście promuje kulturę "czystego kodu" (Clean Code) i buduje bazę wiedzy dostępną natychmiastowo z poziomu terminala, co jest kluczowe w projektach o charakterze edukacyjnym i otwartym.


👇

▒ Przewodnik po blogu: wszystkie posty o programowaniu w jednym miejscu. ▹ Zobacz