Rozdział 13 · Automatyzacja z funkcjami
Wejście, Operacja, Wyjście: Funkcje czyste
Nie każda funkcja musi zwracać coś, ale warto jasno zrozumieć, do czego każda konkretna funkcja jest napisana: dla dobra wyniku czy dla samego efektu.
Ogólny Model Cech
| Przykład | Loguj | Wyjście |
|---|---|---|
convert_temperature | stopni Celsjusza | stopni Fahrenheita |
normalize | surowy tekst | wyczyszczony tekst |
calculate_average | lista liczby | singiel |
Dwa legalne rodzaje funkcji
Nie każda funkcja musi zwracać wartość — funkcje mają dwie legalne role:
| Funkcja-Polecenie/Efekt | Funkcja obliczeniowa |
|---|---|
show_menu(), draw_square(), print_report() | area(...), normalize(...), average(...) |
| główny cel — efekt (wyświetlanie, rysowanie) | głównym celem jest zwrot wartości |
Oba rodzaje są legalne
Nie każda funkcja jest zobowiązana zwracać coś znaczącego —
draw_square() jest całkiem normalne, nawet jeśli nie jest return-ith: jego działanie to efekt na ekranie, a nie wartość.Skutki uboczne
Skutki uboczne — to gdy funkcja zmienia coś POZA swoim wynikiem zwracanym: drukuje na ekran, rysuje Turtle, mutuje przekazany lista, później — zapisuje do pliku.
storonnij_effekt.py
def add_item(items):
items.append("Python") #side efekt: mutuje przekazywany lista
Funkcje czyste
Czysta funkcja - wynik zależy wyłącznie od argumentów, a celowo nie zmienia niczego poza sobą:
chistaya_funkciya.py
def rectangle_area(width, height):
return width * height
dlaczego czyste funkcje są wygodne
łatwiejsze do zrozumienia
wynik zależy wyłącznie od wejścia
Łatwiejsze do przetestowania
nie potrzeba ekranu/pliku/sieci – wystarczy połączenie
Przewidywalność
to samo wejście → zawsze to samo wyjście
Nie każda funkcja MUSI być czysta
Grafika, I/O i obsługa interfejsu to z natury skutki uboczne. Czystość jest przydatna tam, gdzie jest naturalna, a nie uniwersalna zasada, której każda funkcja programu musi przestrzegać.
Praktyka: czyste funkcje vs funkcje z efektem ubocznym
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji