Zelf functies schrijven · oefening
Parameters en argumenten
De functie uit de vorige les drukte altijd hetzelfde bericht af. Met een parameter kan een functie informatie ontvangen en bij verschillende aanroepen andere waarden gebruiken.
def greet(name):
print(f"Hello, {name}!")
De naam tussen de haakjes van de definitie is een parameter:
def greet(name):
# ^ parameter
Het is een variabele die een waarde krijgt wanneer de functie wordt aangeroepen.
greet("Mina")
# ^ argument
De waarde in de aanroep is een argument.
Gebruik de woorden consequent:
Een parameter is een variabele die in een functiedefinitie wordt genoemd.
Een argument is een waarde die in een functieaanroep wordt meegegeven.
Mensen gebruiken de woorden soms losjes, maar dit onderscheid maakt het veel makkelijker om uit te leggen wat code doet.
Eén definitie, verschillende argumenten
Elke aanroep begint een nieuwe uitvoering van het functieblok. Tijdens de eerste aanroep bevat name de waarde "Mina". Tijdens de tweede bevat die "Jon".
De functie heeft niet voor elke persoon een aparte versie nodig. De parameter beschrijft het deel dat mag veranderen.
Meer dan één parameter
Scheid parameters met komma’s:
def show_score(player, points):
print(f"{player} scored {points} points.")
Aanroepen geven voor elke parameter één argument mee:
show_score("Maya", 8)
show_score("Omar", 11)
Standaard koppelt Python ze op basis van hun positie:
| Positie | Parameter | Argument bij de eerste aanroep |
|---|---|---|
| eerste | player | "Maya" |
| tweede | points | 8 |
De argumenten omwisselen levert nog steeds geldige Python-code op, maar het bericht klopt niet meer:
show_score(8, "Maya")
# 8 scored Maya points.
De functie kan alleen werken met de betekenis die je elke positie geeft.
Kies parameters die bij de taak horen
Een parameter moet informatie zijn die de functie nodig heeft. describe_trip heeft een persoonsnaam en een bestemming nodig, dus twee parameters zijn logisch.
Ze heeft niet elke variabele uit het programma nodig. Onverwante informatie meegeven maakt een functie lastiger te begrijpen en correct aan te roepen.
Dit is je eerste kleine ontwerpkeuze: bepaal wat tussen aanroepen verandert en maak die informatie een parameter.
Welke uitspraak over de onderstaande code klopt?
def show_price(amount):
print(f"Price: {amount}")
show_price(12)
Opdracht
Maak describe_trip af zodat de functie twee parameters gebruikt: name en place.
De functie moet een zin in precies deze vorm afdrukken:
Maya is heading to Kyoto.
Behoud beide aanroepen. Dezelfde definitie moet dit opleveren:
Maya is heading to Kyoto.
Omar is heading to Lima.