Functies

Inleidend voorbeeld

Voorlopig schreven we heel korte programma’s waarin we een aantal commando’s oplijstten. Python voert die commando’s dan lijn per lijn uit. Bekijk bijvoorbeeld het volgende programma:

naam = "Harry"
print(f"Hallo, {naam}.")

'Hallo, Harry.'

Dit is prima als we code van een 5-tal lijntjes lang schrijven, maar voor programma’s van duizenden lijnen code wordt dit heel snel onoverzichtelijk. We kunnen functies gebruiken om onze code te structureren. We bekijken even het volgende voorbeeld:

def begroet(naam):
	print(f"Hallo, {naam}.")

begroet("Harry")

'Hallo, Harry.'

We gaan lijn voor lijn door deze code. De eerste lijn is:

def begroet(naam):

We definieren een functie door het keyword def te gebruiken. Hierna volgt de naam van de functie, begroet, gevolgd door ronde haken ( ). Tussen de haken staan er variabelen die we aan onze functie meegeven. In dit geval is dit één variabele, naam. Op het eind van de definitie staat een dubbelpunt :.

De tweede lijn is:

	print(f"Hallo, {naam}.")

Deze lijn code staat ingesprongen t.o.v. de vorige! (2 of 4 spaties; of equivalent: 1 tab). Hierdoor weet Python dat deze code uitgevoerd moet worden als de functie aangeroepen wordt.

De derde lijn is:

begroet("Harry")

Deze lijn staat niet meer ingesprongen. Dit hoort dus niet meer bij de functie begroet(). Deze code voert de functie begroet(naam) uit, waarbij naam vervangen wordt door "Harry".

Kort: de print() functie.

We gebruiken al even print(). Dit is ook gewoon een functie die je aanroept. Deze print de variabele(n) die je afdrukt op het scherm.

Python heeft een aantal functies die je vrij kan gebruiken, zoals print. Later in de cursus komen er nog meer aan bod.

De return-waarde

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

print(som(4, 5))
print(som(2, 3) - 1)

9

4

Elke functie heeft een return-waarde. Wanneer je de functie aanroept evalueert hij naar deze waarde. Onze eerste functie printte een waarde op het scherm, maar het is gebruikelijker om een uitkomst als return waarde te geven.

Argumenten

Een functie kan zoveel argumenten meekrijgen als je maar wil, van alle verschillende datatypes. Je moet ze wél in de juiste volgorde ingeven als je de functie aanroept.

def over_drie_jaar(naam, leeftijd):
	return f"Over drie jaar is {naam} {leeftijd + 3} jaar oud."

print(over_drie_jaar("Hanni", 14))
print(over_drie_jaar(20, "Hammad"))

'Over drie jaar is Hanni 17 jaar oud.'

ERROR

In het tweede geval crasht het programma omdat het “Hammad” + 3 probeert uit te rekenen.