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:
defvertelt Python dat je een functie definieert.show_welcomeis 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:
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.
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:
show_statusdefiniëren zonder parameters;precies
Ready to learn.afdrukken binnen de functie;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.