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

PARAMETRYLoguj sięFUNKCJAalgorytmRETURNwyjście
Parametry → ciało funkcji → return – modelu stosowalnego do dowolnej funkcji z wynikiem
PrzykładLogujWyjście
convert_temperaturestopni Celsjuszastopni Fahrenheita
normalizesurowy tekstwyczyszczony tekst
calculate_averagelista liczbysingiel

Dwa legalne rodzaje funkcji

Nie każda funkcja musi zwracać wartość — funkcje mają dwie legalne role:

Funkcja-Polecenie/EfektFunkcja 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
LOGOWANIEFUNKCJAWYJŚCIE
Funkcja czysta: tylko wejście → wynik
LOGOWANIEFUNKCJAEfekt / Efektekran, Turtle,mutacja...
Funkcja skutku ubocznego: OR/I Efekt Zewnętrzny
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
Otwórz praktykę →