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