Direct naar de hoofdinhoud
Module 5 · Les 1 van 417/36 in de cursus~12 min
Modulelessen (1/4)

zeker en terug

Een functie is een herbruikbaar codeblok: u definieert het eenmalig met def, bel het dan zo vaak als je wilt. Functies maken code modulair, testbaar en zelfdocumenterend.

Basissyntaxis

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

saluta("Ada")     # 'Ciao, Ada!'
  • def introduceert de functie, gevolgd door de naam en de parameters in haakjes.
  • De : opent het ingesprongen blok.
  • return stuurt een waarde terug naar de beller en beëindigt de functie.

Expliciet return versus impliciet None

Als u return niet schrijft, retourneert de functie impliciet None:

Python
def stampa_e_basta(x):
    print(x)

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

Een kale return (geen waarde) retourneert ook None, maar kan dienen als een vroege uitgang:

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

Meerdere waarden? Retourneer een tupel

Python heeft geen "out-parameters": om meer dan één ding terug te geven, retourneert u a tuple (vaak uitgepakt door de beller).

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

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

Docstring: ingebouwde documentatie

De eerste string binnen de functie is de docstring: deze verschijnt in help(fn) en als tooltip in IDE's.

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

Toepassingsgebied: lokale variabelen

Variabelen die binnen een functie zijn gedefinieerd, zijn lokaal: ze bestaan niet buiten.

Python
def f():
    x = 10
    return x

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

Functies retourneren altijd iets

Als een functie in Python niet expliciet een return statement declareert of een lege return bevat, retourneert deze impliciet de speciale waarde None. Er zijn geen functies die geen waarde retourneren.

Probeer het

Oefening#python.m5.l1.e1
Pogingen: 0Laden…

Definieer een functie `double(x)` die `x * 2` retourneert. Roep het dan aan met 7 en wijs het resultaat toe aan `result`. Evalueer 'resultaat'.

Editor laden…
Toon hint

Gebruik retour x * 2.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#python.m5.l1.e2
Pogingen: 0Laden…

Definieer `min_max(nums)` dat een tupel `(minimum, maximum)` retourneert. Roep het op `[3, 1, 4, 1, 5, 9, 2, 6]` en pak het resultaat uit in `mn, mx`. Evalueer `(mn, mx)`.

Editor laden…
Toon hint

retourneert min(nums), max(nums)

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#python.m5.l1.e3
Pogingen: 0Laden…

Definieer een functie \`is_palindrome(text)\` die \`True\` retourneert als de invoertekenreeks gelijk is aan de omgekeerde versie, en anders \`False\`. Test de functie met \`is_palindrome("radar")\` als laatste expressie.

Editor laden…
Toon hint

Gebruik het segmenteren van tekst[::-1] om de tekenreeks om te keren en te vergelijken met de originele tekst.

Oplossing beschikbaar na 3 pogingen