Funktioner i Python
Indhold på denne side
Hvordan laves en funktion?
Nogle funktioner er allerede definerede i sproget, som f.eks. print(), range() og len(), men det er også muligt at definere sine egen funktioner, som kan benyttes i sit program. Fordelen ved dette er, at man ikke behøver at gentage et kodestykke, da man istedet bare kan hidkalde sin funktion. Den her side vil gennemgå, hvordan dette kan lade sig gøre.
En funktion kan defineres med erklæringen def, som står for define, altså, at definere en funktion. Nedenstående kodestykke er et eksempel på, hvordan en funktion kan defineres:
def min_funktion(): print('Denne funktion udprinter denne tekst')
I ovenstående kodestykke er der skrevet følgende:
- Erklæringen def (markeret med blå)
- Funktionens navn (markeret med rød)
- Et åbnings- og lukningsparentes (markeret med grøn)
- Et kolon efter parenteserne (markeret med sort)
- Funktionens indhold som er indrykket på næste linje (markeret med orange)
Funktionen, som er navngivet min_funktion kan hidkaldes ved at skrive funktionens navn. Nedenstående bliver funktionen hidkaldt to gange:
min_funktion() min_funktion()
Dette medfører at funktionens indhold bliver indlæst to gange:
Denne funktion udprinter denne tekst
Denne funktion udprinter denne tekst
Parametre i en funktion
Man kan indsætte en eller flere parametre i sin funktion, mellem åbnings- og lukningsparentesen efter funktionens navn. Hvert parameter skal adskilles med et komma. Det fungerer ligesom i nedenstående eksempel:
def Hilsen(navn, alder): print('Mit navn er ' + navn + ' og jeg er ' + str(alder) + ' år gammel.')
Her er der tilføjet to parametre med navnene navn og alder. Når man hidkalder funktionen så skal man også bestemme hvilke værdier der skal være i hvert parameter:
Hilsen('Andreas', 25)
Nu vil den første parameter, navn, have værdien ‘Andreas’ og den anden værdi, alder, vil have værdien 25. Det betyder at koden vil indlæse følgende:
Mit navn er Andreas og jeg er 25 år gammel.
Man kan helt selv bestemme om man vil inkludere parametre i sin funktion og hvor mange parametre der skal være.
Bemærk at hvis du hidkalder funktionen med flere eller mindre parametre end det som er angivet, så vil du få en TypeError fejlmeddelelse.
Parameterens standardværdi
Man kan tilføje en standardværdi i parameteren, så hvis man hidkalder funktionen uden at indsætte en parameterværdi, så vil standardværdien blive benyttet:
def Min_funktion(by = 'Odense'): print('Jeg bor i ' + by) Min_funktion('Birkerød') Min_funktion()
Her har funktionen Min_funktion én parameter som hedder by, som har standardværdien ‘Odense’. Funktionen er blevet hidkaldt to gange. Den første gang hidkaldes den med parameterværdien ‘Birkerød’. Den anden gang hidkaldes den uden et parameter. Koden vil indlæse nedenstående:
Jeg bor i Birkerød
Jeg bor i Odense
Fordi at der ikke var angivet nogen parameterværdi den anden gang funktionen blev hidkaldt, så blev standardværdien indsat.
return
Erklæringen return kan benyttes inde i en funktion til at angive den værdi som funktionen skal returnere:
def Gang_med_3(x): return 3 * x
Det er vigtigt at kunne skelne forskellen mellem print()-funktionen og return-erklæringen. Den første forskel er, at når man hidkalder en funktion, som benytter en return-erklæring, så skal man benytte print(). Hvis man gør ligesom i nedenstående eksempel, så vil programmet ikke indlæse noget, da man ikke hidkalder funktionen med en print()-funktion:
Gang_med_3(5)
Men hvis man i stedet putter funktionen ind i en print()-funktion, så vil den udprinte return-værdien:
print(Gang_med_3(5))
Dette vil indlæse følgende:
15
Den anden forskel er, at når man benytter return-erklæringen inde i en funktion, så vil funktionen opføre sig som et udtryk, og et udtryk evaluerer altid til en værdi. Det vil sige, at funktionen vil opføre sig som en værdi og på den måde kan man benytte funktionen til at lave andre udregninger:
3_ganget_med_5 = Gang_med_3(5) print(3_ganget_med_5 + 10)
I ovenstående eksempel er der lavet en variabel som hedder 3_ganget_med_5 som er lig med værdien af funktionen Gang_med_3 med en parameterværdi på 5. Det vil sige, at 3_ganget_med_5 har en værdi på 15. Derefter er der lavet en print()-erklæring som udprinter værdien af 3_ganget_med_5 plus 10:
25
Dette eksempel viser, at når man benytter return-erklæringen i sin funktion, så kan man benytte funktionen til andre funktioner og udregninger, da den vil opføre sig som en værdi. Dette ville ikke være muligt hvis man benyttede print() inde i sin funktion i stedet for return.
Bemærk, at der kun kan være én return-erklæring i en funktion. Hvis der var flere, så ville funktionen være lig med flere værdier på en gang og det ville ikke give mening.
None
I Python er der også en datatype som hedder NoneType. Denne datatype har kun én værdi som er None. None repræsenterer at der ikke er nogen værdi. Denne datatype er bl.a. nyttig i forbindelse med return-erklæringen, i tilfælde af, at man vil have at ens funktion ikke skal returnere nogen værdi, ligesom i nedenstående eksempel:
def None_funktion():
return None
Denne funktion vil ikke indlæse noget, hvis man hidkalder den.
Bemærk at None altid skal skrives med stort forbogstav.
Funktionens omfang
Det område hvor en variabel eksisterer og kan benyttes kaldes et omfang. I et Python-program er der to slags omfang:
- Det lokale omfang
- Det globale omfang
Det lokale omfang
En variabel som er skabt inde i en funktion hører til det lokale omfang. Det betyder at variablen kun kan blive benyttet inde i den funktion som den er skabt i.
Det globale omfang
En variabel som er skabt ude for en funktion hører til det globale omfang. Det betyder at variablen kan bruges over det hele – både inde og ude for en funktion.