Rozdział 13 · Automatyzacja z funkcjami

Dockstringi i wskazówki typu

Profesjonalnym nawykiem, który należy wypracować wcześnie, jest dokumentowanie funkcji, aby można ją było zrozumieć bez czytania implementacji.

Docstring — dokumentacja funkcji

docstring.py
def rectangle_area(width, height):
    """Zwraca pole prostokąta."""
    return width * height
Komentarz (# ...)Dokstring ("""...""")
Wyjaśniadlaczego kod napisano dokładnie w ten sposóbco dokładnie robi ta funkcja – jak API
Widoczne z zewnątrz?nie, tylko w źródletak, przez help() i __doc__

help() pokazuje docstring podczas działania programu

help_primer.py
help(rectangle_area)
print(rectangle_area.__doc__)
Help on function rectangle_area in module __main__:

rectangle_area(width, height)
    Возвращает площадь прямоугольника.
help() pobiera docstring bezpośrednio z obiektu funkcji — to ten sam pomysł, który już widzieliśmy w przypadku funkcji wbudowanych

Type hints - Wskazówki typu

type_hints.py
def rectangle_area(width: float, height: float) -> float:
    return width * height
CzęśćZnaczenie
width: floatoczekiwany typ parametru
-> floatoczekiwany typ zwrotu
Wskazówki typu nie są automatycznie sprawdzane w czasie działania
def add(a: int, b: int) -> int: NIE zaszkodzi zadzwonić add("2", "3") — Python nie będzie automatycznie zamieniać linii na liczby i samo z siebie nie wygeneruje błędu. Adnotacje typów to dokumentacja i wskazówka dla narzędzi programistycznych, a nie runtime-sprawdzenie.

Adnotacje do kolekcji

annotacii_kollekcij.py
def average(scores: list[float]) -> float:
    return sum(scores) / len(scores)

def count_words(text: str) -> dict[str, int]:
    ...

Wartość opcjonalna w adnotacji

optional_annotation.py
def find_user(name: str) -> str | None:
    ...
str | None czyta się jako „łańcuch znaków lub None”
Taka adnotacja mówi: funkcja albo zwróci łańcuch znaków, albo Nonejeśli nic nie zostanie znalezione. To nie jest osobny temat, a jedynie sposób na wyraźne opisanie słowami tego, co już widzieliśmy w praktyce (np. dict.get()).

Adnotacje nie nadpisują domyślnej pułapki mutowalnej

annotacii_ne_spasayut.py
def add(item: str, items: list[str] = []):
    ...
    # wciąż ta sama pułapka z §13.7!
Adnotacje typów są dokumentacją, a nie ochroną przed błędami w czasie wykonywania
Nawet z pełnymi adnotacjami items: list[str] = [] pozostaje tą samą zmienną wartością domyślną co wcześniej — adnotacja nie zmienia nic w rzeczywistym zachowaniu funkcji.
Praktyka: docstringi i wskazówki typów
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →