Przejdź do głównej treści
eLearner.app
Moduł 5 · Lekcja 1 z 417/36 w kursie~12 min
Lekcje modułu (1/4)

def i return

Funkcja to blok kodu wielokrotnego użytku: definiujesz go raz za pomocą def, a następnie wywołujesz tyle razy, ile chcesz. Funkcje sprawiają, że kod jest modułowy, testowalny i samodokumentujący się.

Podstawowa składnia

Python
def saluta(nome):
    return f"Ciao, {nome}!"

saluta("Ada")     # 'Ciao, Ada!'
  • def wprowadza funkcję, po której następuje nazwa i parametry w nawiasach.
  • Dwukropek : otwiera wcięty blok.
  • Instrukcja return zwraca wartość do wywołującego i kończy działanie funkcji.

Jawne return vs niejawne None

Jeśli nie napiszesz return, funkcja niejawnie zwróci None:

Python
def stampa_e_basta(x):
    print(x)

risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato)   # None

Samo return (bez wartości) również zwraca None, ale może służyć jako wcześniejsze wyjście z funkcji:

Python
def primo_pari(nums):
    for n in nums:
        if n % 2 == 0:
            return n
    return None   # explicit: communicates "not found"

Wiele wartości? Zwróć krotkę

Python nie ma "parametrów wyjściowych": aby zwrócić więcej niż jedną rzecz, zwróć krotkę (często rozpakowywaną przez wywołującego).

Python
def divisione_resto(a, b):
    return a // b, a % b

quoziente, resto = divisione_resto(17, 5)
# 3, 2

Docstring: wbudowana dokumentacja

Pierwszy ciąg znaków wewnątrz funkcji to docstring: pojawia się w help(fn) oraz jako podpowiedź (tooltip) w środowiskach IDE.

Python
def area_cerchio(raggio):
    """Calcola l'area di un cerchio dato il raggio."""
    import math
    return math.pi * raggio ** 2

Zakres (Scope): zmienne lokalne

Zmienne zdefiniowane wewnątrz funkcji są lokalne: nie istnieją poza nią.

Python
def f():
    x = 10
    return x

f()    # 10
x      # NameError: name 'x' is not defined

Funkcje zawsze coś zwracają

W Pythonie, jeśli funkcja nie deklaruje jawnie instrukcji return lub zawiera puste return, niejawnie zwróci specjalną wartość None. Nie ma funkcji, które nie zwracają wartości.

Spróbuj sam

Ćwiczenie#python.m5.l1.e1
Próby: 0Ładowanie...

Zdefiniuj funkcję `double(x)` która zwraca `x * 2`. Następnie wywołaj ją z wartością 7 i przypisz wynik do zmiennej `result`. Oceń `result`.

Ładowanie edytora...
Pokaż wskazówkę

Użyj return x * 2.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#python.m5.l1.e2
Próby: 0Ładowanie...

Zdefiniuj `min_max(nums)` która zwraca krotkę `(minimum, maximum)`. Wywołaj ją na `[3, 1, 4, 1, 5, 9, 2, 6]` i rozpakuj wynik do `mn, mx`. Oceń `(mn, mx)`.

Ładowanie edytora...
Pokaż wskazówkę

return min(nums), max(nums)

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#python.m5.l1.e3
Próby: 0Ładowanie...

Zdefiniuj funkcję `is_palindrome(text)` która zwraca `True` jeśli wejściowy ciąg znaków jest równy swojej odwróconej wersji, a `False` w przeciwnym razie. Przetestuj funkcję wywołaniem `is_palindrome("radar")` jako ostatnim wyrażeniem.

Ładowanie edytora...
Pokaż wskazówkę

Użyj slicingu text[::-1] do odwrócenia ciągu znaków i porównania go z tekstem oryginalnym.

Rozwiązanie dostępne po 3 próbach