Rozdział 13 · Automatyzacja z funkcjami

Dlaczego program potrzebuje funkcji

Pętle automatyzują powtarzanie w wątku wykonywania. Funkcje automatyzują ponowne wykorzystanie zachowań — i to nie to samo.

Problem, którego pętle nie rozwiązują

W rozdziale 12 nasze projekty stawały się coraz większe, a zaczęły się powtarzać Logiczne blokady. Na przykład w quizie ten sam zestaw działań to „zadaj pytanie, normalizuj odpowiedź, porównaj, obliczaj” podczas gdy powtarzanie następuje jedno z rzędu, to w jednym Lokalizacja.

Ale co jeśli potrzebne są te same działania:

Cykl tutaj nie pomoże — on potrafi powtarzać tylko to, co znajduje się bezpośrednio w jego ciele. Potrzebne jest inne narzędzie: metoda nadanie tej akcji nazwy i powoduje to Z każdego miejsca.

Funkcja vs cyklu

POWTÓRZterazPOWTÓRZterazPOWTÓRZteraz
Loop: Jeden wątek powtarzalnego wykonania
draw_square(definiuje sięrazy)WYZWANIEz każdego miejscaWYZWANIEz każdego miejscaWYZWANIEz każdego miejsca
Funkcja: Definiowana raz, wywoływana na żądanie
Nie alternatywy, lecz wzajemne uzupełnianie się
Pętle automatyzują powtarzanie się w przepływie wykonania. Funkcje automatyzują ponowne wykorzystanie zachowań. Wkrótce zobaczymy funkcję o nazwie INSIDE the loop — działają one idealnie razem, a nie zamiast siebie.

Funkcje są rozkładane

W rozdziale 12 już rozbiliśmy wielki problem na małe kroki — tak się to nazywało rozkład. Funkcja to sposób nie tylko na mentalne wybranie kroku, ale Dosłownie nadaj temu nazwę w kodzie:

QUIZshow_question()pytanie o programcheck_answer()sprawdzić odpowiedźshow_result()pokazać wynik
Duże zadanie → części zrozumiałe nazwami — to jest dekompozycja w kodzie

Każda funkcja — to znacząca nazwa dla jednej części większego algorytmu.

Abstrakcja: przydatny poziom szczegółowości

Już używasz print(...)bez zastanowienia się, jak dokładnie Tekst pojawia się na ekranie. Podobnie wyzwanie draw_house() mógł ukryć dziesiątki komend do narysowania dachu, ścian i okien:

draw_house()jedno wezwaniedziesiątki drużynrysowania wewnątrz
Rozmowa ukrywa szczegóły wdrożenia za przyjazną nazwą
Abstrakcja nie polega na „ukryciu wszystkiego”
Abstrakcja oznacza, że możemy używać znaczącej operacji bez konieczności myślenia o każdym szczegółzie jej wdrożenia za każdym razem. To nie znaczy, że szczegóły nie są dostępne lub nieistotne — po prostu w większości zadań wystarczy wiedzieć, CO draw_house(), nie JAK dokładnie.

Już wywoływałeś funkcje — od samego pierwszego rozdziału

print(), input(), len(), type(), int(), range(), sorted(), min(), max() — wszystkie one to po prostu funkcje wbudowane w Python. Przez cały ten czas je PRZYWOŁYWAŁEŚ. Teraz dowiedzmy się, jak je TWORZYĆ:

Funkcja wbudowanaTwoja przyszła funkcja
len("Python")calculate_area(10, 5)

Ogólny model jest taki sam dla obu:

NAZWA + ARGUMENTYWYZWANIEREZULTAT /EFEKT
Nazwa funkcji + argumenty → wywołanie → wynik lub efekt – zarówno dla wbudowanych funkcji, jak i dla twoich własnych
Praktyka: Pętla lub funkcja – co rozwiązuje problem
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →