Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

Funksjoner 0: Introduksjoner

En subrutine er en måte å styre kodeflyten på i et program. I python bruker vi ordet "def", fra "define", for å definere subrutiner. Noen ganger skiller man mellom prosedyrer, funksjoner og metoder.
En prosedyre er da en subrutine som ikke har en eksplisitt returverdi, mens en funksjon har en eksplisitt returverdi. Metoder hører til en klasse, og kalles metoder uavhengig av returverdien. Alle subrutiner kan ta ha parametre, uten at det påvirker navngivningen. Metoder blir ikke behandlet her.

En subrutine kan se slik ut:

def skrivhei():
    print("Hei!")

Denne prosedyren, skrivhei(), er en prosedyre fordi vi ikke har brukt kodeordet "return" (mer om det snart!). Den skriver ut en melding til brukeren. Den gjør altså det samme som å bare skrive print("Hei!"), men vi kan kalle på den når vi vil. Vi kaller på en prosedyre, funksjon eller metode ved å skrive paranteser under. Hvis ingen parametre er nødvendige så er parantesene tomme.

Vi kan kalle på prosedyren skrivhei():

skrivhei()

Da får vi utskriften:

>>>Hei!

En prosedyre kan ta parametre. Vi lager en ny prosedyre, skrivhei2(), som tar inn navnet til brukeren den skal si hei til. navn er da parameteren som holder på navnet. Når vi definerer prosedyren vet vi ikke ennå akkurat hva slags verdi den har, men vi bør ha det klart for oss hva slags type det skal være, slik at vi ikke får feil i programmet. I dette tilfellet antar vi at navn er en streng.

def skrivhei2(navn):
    print("Hei,",navn,"!")

Så langt har vi bare skrevet ut ting i prosedyrene. Prosedyrer som dette kan skrive ut ting, ta inn info, og endre verdier, men vi kan ikke få noe tilbake. For å lage subrutiner som gir oss noe, et resultat, så må vi bruke ordet return. Vi får da en funksjon, og sier at den returnerer noe. Det som returneres er returverdien til funksjonen. Funksjoner har stort sett parametre. Merk at informatikk-definisjonen av funksjoner i dette tilfellet er mindre streng enn definisjonen du kanskje kjenner igjen fra matematikken. Den forskjellen er ikke viktig i dette tilfellet.

Vi lager en funksjon adder(x,y) som tar to tall, x og y, og legger dem sammen. Summen blir returnert.

def adder(x,y):
    summen = x + y
    return summen

Man kan også forkorte koden, siden vi ikke bruker variabelen "summen" til noe annet her:

def adder(x,y):
    return x + y

Nå kan vi sende med to argumenter og kalle på funksjonen. Argumenter er det vi kaller de faktiske verdiene vi gir parametrene i funksjonen. I funksjonen adder(x,y) er x og y parametre. I funksjonskallet under er 1 og 2 argumenter.

Når en funksjon returnerer noe så er ikke resultatet umiddelbart synlig. Det er ikke noe utskrift. Vi må skrive til terminalen eller lignende uavhengig av funksjonen:

Dette gir altså ingen utskrift:

adder(1,2)

Mens dette gjør det:

print(adder(1,2))

Utskrift:

3

Et funksjonskall blir evaluert til returverdien sin. Det er veldig nyttig. Vi kan altså skrive:

mitt_tall = adder(1,2) + adder(3,4)

Eller så kan vi ta den helt ut og skrive kode som er vanskelig å lese, men som kjører:

mitt_tall = adder(adder(1,2),adder(3,4))

Verdien til mitt_tall blir i begge tilfeller 10.