6.2.5 Het verschil tussen return en print

Je stelt je misschien de vraag wat het verschil is tussen een functie die een waarde retourneert, en een functie die een waarde print.

 

Vergelijk de volgende twee stukken code:

en

Zowel de functie print3() als de functie return3() worden aangeroepen in hun respectievelijke hoofdprogramma’s, en beide resulteren in het printen van de waarde 3. Het verschil is dat bij print3() dit printen gebeurt in de functie en de functie niks retourneert, terwijl bij de functie return3() de waarde 3 wordt geretourneerd, en geprint in het hoofdprogramma. Voor de gebruiker lijkt er geen verschil te zijn: beide programma’s printen 3. Voor een programmeur zijn beide functies echter compleet verschillend.

Merk ook op dat bij print3() de tekst "na 3 komt 4" ook wordt getoond. Wordt de tekst "komt 4 na 3?" ook getoond bij return3()?

De functie print3() kan voor slechts één doel gebruikt worden, namelijk het tonen van het getal 3. De functie return3() kan echter gebruikt worden waar je ook maar het getal 3 nodig hebt: om het te tonen, om het te gebruiken in een berekening, of om het aan een variabele toe te kennen. Bijvoorbeeld, de volgende code verheft 2 tot de macht 3 en print de uitkomst:

De code hieronder, echter, geeft een runtime error:

 

De reden is dat hoewel print3() het getal 3 op het scherm toont (je ziet het boven de runtime error als je de code uitvoert), het niet de waarde 3 produceert op een manier dat een berekening er gebruik van kan maken. De functie print3() geeft de speciale waarde None, en die kan niet in een berekening gebruikt worden.

Dus als je een functie wilt maken die een waarde oplevert die elders in je code gebruikt moet worden, dan moet die functie de waarde middels een return retourneren. Als je een functie wilt maken die informatie toont, dan kun je dat gewoon doen middels print statements in de functie, en hoeft de functie niets te retourneren.