Sprint 5 · Functies & scope  ·  US1: DRY & functies

Als developer, wil ik code die ik vaker nodig heb één keer opschrijven in een functie, zodat ik een wijziging op één plek doe en een fout niet op drie plekken tegelijk zit.

Taak 2: def: code een naam geven

Een functie is een codeblok dat je een naam geeft zodat je het keer op keer kunt aanroepen.

Functie-syntax: invoer, verwerking, uitvoer

Nu je herhaling herkent, verpak je het in een functie. Een functie heeft:

  • def — sleutelwoord: "maak een functie"
  • Naam — bijv. is_valid
  • Parameters — invoer (optioneel)
  • Body — wat de functie doet
  • return — wat geeft het terug (optioneel)

Voorbeeld 1: Functie MET parameter

def is_valid(value):
    if value < 0 or value > 100:
        return False
    return True

# Aanroepen
result = is_valid(50)   # True
result = is_valid(150)  # False

Voorbeeld 2: Functie ZONDER parameter

def get_welcome():
    return "Welkom!"

# Aanroepen
msg = get_welcome()  # "Welkom!"

Voorbeeld 3: Meerdere parameters

def calculate_percentage(used, total):
    return (used / total) * 100

pct = calculate_percentage(50, 200)  # 25.0
😩 Herhaald (voor)
if temp1 < 0 or temp1 > 100:
    print("Ongeldig")

if temp2 < 0 or temp2 > 100:
    print("Ongeldig")

if temp3 < 0 or temp3 > 100:
    print("Ongeldig")
✨ Functie (na)
def is_valid(t):
    return 0 <= t <= 100

if not is_valid(temp1):
    print("Ongeldig")
if not is_valid(temp2):
    print("Ongeldig")
if not is_valid(temp3):
    print("Ongeldig")

Interactieve demo

Typ een getal en zie wat de functie teruggeeft:

function_test.py
Voer getal in (0-100 is geldig)
$
Probeer: 50, 150, -10
Vuistregel: Parameters in → return uit. Eenvoudig patroon. Parameters zijn optioneel.
>_ Probeer het voorbeeld

Drie functies: één met een parameter, één met twee parameters en één zonder parameters. Draai het voorbeeld en volg welke functie welke regel oplevert.

Probeer daarna: voeg een vierde meting toe, of verander het bereik in is_percentage() en kijk hoeveel plekken je daarvoor moet aanpassen.

Klik op de knop om de uitvoer van het voorbeeld te zien.

Opdracht: Schrijf twee functies

Scenario: een serverscript controleert drie meetwaarden: CPU, schijf en geheugen. Alle drie moeten tussen 0 en 100% liggen. Nu staat die controle drie keer in het script. Schrijf functies zodat de controle nog maar op één plek staat.

Starter-variabelen:

cpu = 45
disk = 87
memory = 120  # Oeps!

Wat je moet schrijven:

  • Er is een functie is_percentage(value) die True geeft bij 0 t/m 100 en anders False
  • Er is een functie check_all_sensors(cpu, disk, memory) die alleen True geeft als alle drie de waarden geldig zijn
  • Het bereik 0–100 staat maar op één plek in je code
  • Met de gegeven waarden geeft check_all_sensors() False; met geheugen op 60 geeft hij True
  • De functies printen zelf niets — de uitkomst print je buiten de functies