Funkcje
Często zdarza się, że konkretny fragment kodu jest kilkukrotnie powtarzany wewnątrz jednego programu. Jest powtarzany dosłownie, bądź z drobnymi modyfikacjami polegającymi na wykorzystaniu innych zmiennych w tym samym algorytmie.
Jeśli dany fragment kodu pojawia się w więcej niż jednym miejscu, zastanów się, czy można wyodrębnić ten fragment i stworzyć dla niego osobną funkcję wywoływaną w miejscu, gdzie pierwotnie widniał on w kodzie.
Miałeś też już okazję sięgnąć po wybrane metody, które de facto są funkcjami, ale zadeklarowanymi w szczególny sposób. Kiedy chcesz wyświetlić jakieś dane w konsoli, korzystasz z funkcji print()
. Kiedy chcesz wczytać wartość zmiennej, wykorzystujesz funkcję input()
, w połączeniu z funkcją int()
lub float()
.
Dobry i dbały programista dzieli kod (a konkretniej problem, który musi rozwiązać) na odrębne części, aby każdą z nich zapisać w kodzie jako osobne funkcje. Ten proces nosi nazwę dekompozycji.
Definicja funkcji:
def nazwa_funkcji(): cialo_funkcji
Pamiętaj:
- parametry żyją wewnątrz funkcji (to jest ich naturalne środowisko)
- argumenty istnieją poza funkcjami i są nośnikami wartości przekazywanych do odpowiednich parametrów.
def funkcja(parametr): print("Wprowadziłeś: ", parametr)
funkcja(„Jakiś argument przekazany do parametru”)
Przykłady funkcji:
def suma(a, b, c): print(a, "+", b, "+", c, "=", a + b + c) suma(2,4,6)
def suma(a, b=2, c=0): print(a + b + c) suma(a=1, c=1)
W pierwszej kolejności podajemy argumenty, które nie posiadają wartości domyślnych w parametrach, następnie te, które posiadają wartości domyślne. W przeciwnym wypadku program zwraca błąd składni SyntaxError.
def suma(a, b=2, c): print(a + b + c) suma(a=1, c=1)
Błąd składni SyntaxError – argument c nie ma domyślnej wartości i występuje po argumencie b posiadającym domyślną wartość 2.
def suma_listy(lst): suma = 0 for elem in lst: suma += elem return suma print(suma_listy(5))
Odpowiedź języka Python będzie następująca:
TypeError: 'int' object is not iterable
Jest to spowodowane faktem, że pojedyncza wartość całkowita nie może być iterowana przez pętlę for.
Prawidłowe wywołanie funkcji:
print(suma_listy([5]))
Test