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