14

Funkcje: def i return – własny fragment kodu z własną nazwą

Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.

Czego się nauczysz

print, len, sum, range – to wszystko są funkcje i używasz ich od pierwszej lekcji. Teraz nauczysz się pisać własne. To ważny krok: klasa, którą będziesz pisać na egzaminie, składa się z metod, a metoda to funkcja mieszkająca w klasie.

Po tej lekcji:

Po co własne funkcje

Budowa funkcji

def przywitaj():
    print("Czesc!")
    print("Milego dnia")

przywitaj()
przywitaj()

Definicja i wywołanie to dwie różne rzeczy. Blok def sam z siebie niczego nie wykonuje – opisuje tylko, co ma się dziać. Funkcję uruchamiasz dopiero, pisząc jej nazwę z nawiasem.

return – funkcja oddaje wynik

Bez return funkcja tylko coś robi. Z return – coś daje.

def dodaj(a, b):
    return a + b

wynik = dodaj(2, 3)
print(wynik)         # 5
print(wynik * 10)    # 50
print(dodaj(7, 8))   # 15

Instrukcja return kończy działanie funkcji i przekazuje wartość w miejsce, z którego funkcja została wywołana. Tę wartość możesz zapisać do zmiennej, wypisać albo użyć w obliczeniu.

return kontra print – najważniejsza różnica w tym roku

print pokazuje. return oddaje.

def dodaj_zle(a, b):
    print(a + b)

def dodaj_dobrze(a, b):
    return a + b

x = dodaj_zle(2, 3)      # na ekranie: 5
print(x)                 # None – pusto!
y = dodaj_dobrze(2, 3)
print(y * 10)            # 50

Obie funkcje „pokażą” piątkę. Ale tylko druga daje wynik, którego można użyć dalej.

Funkcja bez return zwraca None

To nie jest błąd i program się nie wywali. Po prostu w zmiennej wyląduje None – a problem ujawni się dopiero kilka linii dalej, w zupełnie innym miejscu.

Zasada na cały rok: funkcja liczy i zwraca. Wypisywanie to zadanie programu głównego, nie funkcji.

Dlaczego to takie ważne? Testy jednostkowe porównują wynik funkcji z oczekiwaną wartością. Funkcji, która tylko wypisuje, nie da się przetestować.

Spróbuj sam

W kodzie z lekcji znajdź funkcje dodaj_print i dodaj_return. Uruchom program i zobacz, co trafiło do zmiennych x i y. Potem zmień dodaj_print tak, żeby zwracała wynik.

Zadania z lekcji:

  1. Napisz funkcję przywitaj, która wypisuje trzy linie powitania. Wywołaj ją dwa razy.
  2. Napisz funkcję dodaj(a, b), która zwraca sumę. Wypisz wynik dodawania oraz wynik pomnożony przez 10.
  3. Napisz funkcję srednia(lista), która zwraca średnią z listy liczb. Przetestuj ją na liście [4, 8, 15, 16, 23, 42].
  4. Napisz dwie wersje funkcji liczącej pole prostokąta: jedną z print, drugą z return. Spróbuj pomnożyć wynik każdej przez 2 i zapisz w komentarzu, co się stało.

W zadaniach 2, 3 i 4 funkcja musi kończyć się instrukcją return.

Sprawdź się

Na następnej lekcji: parametry funkcji i wartości domyślne. Ta sama funkcja zacznie działać na różnych danych.

Notatki

PDF
Zadania utrwalające Karta pracy do tej lekcji: zadania sprawdzające i domowe do samodzielnego zrobienia w swoim edytorze · 4 strony.
Zadania utrwalające – Funkcje: def i return – własny fragment kodu z własną nazwą
Strona 1 z 4 Strona 2 z 4 Strona 3 z 4 Strona 4 z 4

Prezentacja

Slajd 1 z 7
1 / 7

Kod

Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.

PY
demo_14_funkcje-def-return.py Kod z lekcji – otwórz, zmieniaj i uruchamiaj; wynik zobaczysz obok kodu.
demo_14_funkcje-def-return.py
Wynik programu
Kliknij „Uruchom”, żeby zobaczyć tutaj wynik programu.