0%

Zelf functies schrijven · oefening

Definieer en roep een functie aan

Je eerste functie doet één vaste taak. Nog geen parameters en nog geen resultaat voor de aanroeper om te gebruiken. Zo richt je je op de vorm van een definitie.

def show_welcome():
    print("Welcome to the trail.")

Lees de eerste regel van links naar rechts:

  • def vertelt Python dat je een functie definieert.

  • show_welcome is de functienaam.

  • () is de plek waar later parameters komen. Lege haakjes betekenen dat deze functie geen informatie verwacht.

  • : begint het ingesprongen blok.

Het blok hoort bij de functie:

    print("Welcome to the trail.")

Dezelfde inspringing van vier spaties die je bij if-instructies en lussen gebruikte, geeft de regels aan die bij de functie horen.

De functie aanroepen

Nadat Python de definitie heeft bereikt, kun je de functie aanroepen door haar naam met haakjes erachter te schrijven:

Try it

Het blok wordt één keer per aanroep uitgevoerd. De definitie zelf voert nog steeds geen regels van het blok uit.

Python moet de naam eerst kennen

Programma’s worden van boven naar beneden uitgevoerd. Deze volgorde werkt:

def show_welcome():
    print("Welcome to the trail.")

show_welcome()

Deze volgorde niet:

show_welcome()

def show_welcome():
    print("Welcome to the trail.")

Op de eerste regel heeft Python de definitie nog niet bereikt, dus bestaat de naam show_welcome niet. Het resultaat is een NameError.

Meestal zet je functiedefinities bovenaan een kort programma en de aanroepen die het werk starten eronder.

Een aanroep verandert tijdelijk waar Python werkt

Als Python bij show_welcome() komt, gaat het het functieblok in. Na afloop gaat het terug naar de regel na de aanroep.

Try it

De uitvoer volgt de werkelijke volgorde van het programma:

Before the call
Ding!
After the call

Die sprong een functie in en terug naar de aanroeper is het basisritme van elke functie die je gaat schrijven.

De tijdelijke invulling in de volgende startcode

Python vereist een ingesprongen blok na elke def-regel. In de volgende oefening bevat het onvoltooide blok deze tijdelijke invulling:

def describe_trip(name, place):
    pass

pass betekent ‘doe hier niets’. Daardoor kan onvoltooide startcode toch geldige Python-code zijn. Vervang het door het echte blok uit de opdracht. Een functie die alleen pass bereikt, doet geen nuttig werk en geeft geen nuttig resultaat terug.

Welke eerste regel definieert correct een functie met de naam show_map die geen informatie verwacht?

Opdracht

Definieer een functie met de naam show_status en roep haar aan.

Je programma moet:

  1. show_status definiëren zonder parameters;

  2. precies Ready to learn. afdrukken binnen de functie;

  3. show_status() precies één keer aanroepen na de definitie.

Verwachte uitvoer:

Ready to learn.

Gebruik zodra het werkt Step in de oefeneditor. Let erop wanneer Python de definitie onthoudt, wanneer de aanroep het functieblok binnengaat en waar de uitvoering verdergaat nadat het blok is afgelopen.