Funktioner i Python
Att skapa och använda egna funktioner i Python är enklare än i många andra språk. Denna enkelheten kommer mycket från att vi i Python kan returnera i princip vad som helst, inte bara heltal och flyttal som är fallet i många andra språk. I andra språk måste vi ofta ta till knep som pekare för att kunna returera exempelvis strängar. Något sådant behövs inte Python, allt detta sköts i bakgrunden i Python.
En första funktion
Här visas ett komplett litet Python-program med en egen funktion. Just denna funktion returnerar inte något värde, utan skriver ut resultatet på skärmen direkt.
#!/usr/bin/env python3
def hej():
print ("Nu ska vi lära oss om funktioner i Python")
hej()
Utdatan från detta programmet när vi kör det är helt enkelt bara meningen “Nu
ska vi lära oss om funktioner i Python”. Notera att om vi inte hade anropat
funktionen hej()
på den sista raden så hade ingenting skrivits ut på
skärmen. Då hade bara funktionen definierats och sedan hade programmet
avslutats. En funktion utför bara något när vi explicit anropar den.
Det som händer är att vi först skapar en funktioner som vi definierar med
def
-kommandot. Vi anger att funktionen ska heta hej och att funktionen inte
ska ta några argument genom att inte skriva något innanför parenteserna. När vi
sedan anropar funktionen körs den indenterade koden som står under def
hej():
.
Argument?
Vi nämnde precis att vår funktion inte tar några argument, vad är då detta för något? Jo, för att en funktion verkligen ska vara användbar så ska vi ju helst kunna mata den med någon form av indata. Låt oss exempelvis anta att vi vill göra en enkel funktion för att skriva ut kvadraten på ett tal. Vi vill då ange talet till funktionen och få svaret som svar på skärmen.
#!/usr/bin/env python3
def kvadrat(tal):
print ("Kvadraten på " + str(tal) + " är: " + str(tal**2))
kvadrat(5)
Här har vi skapat ett sådant enkelt program. Nu tar vår funktion kvadrat ett
argument, nämligen variabeln tal. Vi använder sedan tal inuti funktionen för
att skriva ut vad kvadraten på tal blir med tal**2
. Två styck asterisker i
Python betyder “upphöjt till”, i detta fallet tal upphöjt till två. I vårt
program angav vi sedan 5 som argument till funktionen när vi anropade den, och
svaret vi får är 25.
Returnera istället för att skriva ut
Istället för att skriva ut resultatet på skärmen som vi gjorde precis så hade det ju faktiskt varit bättre om vi kunde spara resultatet i en ny variabel för att sedan kunna utföra nya beräkningar. Det är just detta som returvärden används för. Vi skriver nu om vår funktion för att returnera värdet istället för att bara skriva ut det. Vi vill nu inte längre ha med hela meningen “Kvadraten på…” utan bara själva talet, annars kan vi inte utföra beräkningar med resultatet.
#!/usr/bin/env python3
def kvadrat(tal):
return (tal**2)
x = kvadrat(5)
print ("Nu har vi sparat resultatet i x och x är: " + str(x))
print ("Vi kan nu utföra nya beräkningar med resultatet, t.ex.")
print ("x * 10 = " + str(x*10))
Resultatet från koden ovan blir:
Nu har vi sparat resultatet i x och x är: 25
Vi kan nu utföra nya beräkningar med resultatet, t.ex.
x * 10 = 250
Avslutning
Nu har vi faktiskt lärt oss grunderna i hur funktioner fungerar i Python! Mycket svårare än så här är det faktiskt inte.
CyberInfo Sverige är ett IT-företag i NV-Skåne som tillhandahåller böcker och konsulttjänster inom Linux, BSD och programmering.
CyberInfo Sverige är godkänd för F-skatt och är momsregistrerat.