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:
- w różnych lokalizacji programów — nie kolejno;
- z różne dane za każdym razem;
- z różnych projektach w ogóle;
- na żądanie, a nie według harmonogramu cyklu?
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
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:
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(), 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 wbudowana | Twoja przyszła funkcja |
|---|---|
len("Python") | calculate_area(10, 5) |
Ogólny model jest taki sam dla obu: