Tilbake
3.4
Funksjoner og modularitet

3.4 Funksjoner og modularitet

Definere og bruke funksjoner, parametre og returverdier for gjenbrukbar kode.

55 min
6 oppgaver
FunksjonerParametreReturverdierModulariseringScope
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 6 oppgaver

Funksjonar og modularitet

Når program blir større, blir det vanskeleg å halde oversikt. Funksjonar lèt oss dele opp koden i gjenbrukbare, namngjevne blokker som kvar løyser éi oppgåve. Du har allereie brukt innebygde funksjonar som print(), input() og range(). No skal du lære å lage dine eigne.

Fordelar med funksjonar:
- Gjenbruk: Skriv koden éin gong, bruk han mange gonger
- Oversikt: Programmet blir lettare å lese og forstå
- Feilsøking: Lettare å finne og fikse feil i isolerte blokker
- Samarbeid: Ulike personar kan jobbe med ulike funksjonar

Definere funksjonar med def

Vi lagar ein funksjon med nøkkelordet def, etterfølgt av funksjonsnamnet og parentesar:

def hilsen():
    print("Hei og velkommen!")
    print("Hyggelig å se deg.")

For å kalle (bruke) funksjonen skriv vi namnet med parentesar:

hilsen()   # Kjører koden inne i funksjonen
hilsen()   # Vi kan kalle den så mange ganger vi vil

Viktig: Funksjonen må definerast før han blir kalla. Python les koden ovanfrå og ned.

✏️Ein enkel funksjon

Lag ein funksjon som skriv ut ei skiljelinje for å gjere utskrifter ryddigare.

def skriv_linje():
    print("-" * 40)

skriv_linje()
print("Rapport: Spenning i krets A")
skriv_linje()
print("Måling 1: 5.2V")
print("Måling 2: 5.1V")
skriv_linje()

Output:

----------------------------------------
Rapport: Spenning i krets A
----------------------------------------
Måling 1: 5.2V
Måling 2: 5.1V
----------------------------------------
📝Oppgave 1

Kva er rett måte å definere ein funksjon på i Python?

Parametrar og returverdiar
Parametrar er verdiar vi sender inn til ein funksjon. Returverdiar er resultatet funksjonen gjev tilbake.

def adder(a, b):       # a og b er parametre
    return a + b       # return sender verdien tilbake

resultat = adder(3, 5) # 3 og 5 er argumenter
print(resultat)        # 8

Ein funksjon kan ta null, éin eller fleire parametrar. Utan return returnerer funksjonen None.

def beregn_areal(lengde, bredde):
    return lengde * bredde

areal = beregn_areal(5, 3)
print("Arealet er:", areal)  # Arealet er: 15
✏️Ohms lov som funksjon

Lag ein funksjon som reknar ut motstand ved hjelp av Ohms lov: R = U / I.

def beregn_motstand(spenning, strom):
    if strom == 0:
        return None   # Kan ikke dele på null
    return spenning / strom

# Bruk funksjonen
r1 = beregn_motstand(12, 0.5)
r2 = beregn_motstand(5, 0.1)

print("Motstand 1:", r1, "ohm")  # 24.0 ohm
print("Motstand 2:", r2, "ohm")  # 50.0 ohm

Funksjonen tek spenning og straum som parametrar og returnerer motstanden. Ved straum lik 0 blir None returnert for å unngå feil.

📝Oppgave 2

Lag ein funksjon beregn_effekt(spenning, strom) som returnerer effekten P = U × I. Test funksjonen med spenning 230V og straum 0.5A.

📝Oppgave 3

Kva returnerer denne funksjonen når vi kallar dobbel(4)?

def dobbel(x):
    resultat = x * 2
    print(resultat)

Standardverdiar for parametrar

Vi kan gje parametrar ein standardverdi (default). Då treng ikkje brukaren å oppgje alle argumenta:

def hilsen(navn, sprk="norsk"):
    if sprk == "norsk":
        print(f"Hei, {navn}!")
    elif sprk == "engelsk":
        print(f"Hello, {navn}!")

hilsen("Kari")              # Hei, Kari!  (bruker standard "norsk")
hilsen("Kari", "engelsk")   # Hello, Kari!

Reglar:
- Parametrar med standardverdi må kome etter parametrar utan
- Standardverdiar gjer funksjonar meir fleksible
- Du kan overstyre standardverdien ved å sende inn eit argument

✏️Motstandsberekning med eining

Lag ein funksjon som reknar ut og formaterer motstand med valfri eining.

def vis_motstand(spenning, strom, enhet="ohm"):
    motstand = spenning / strom
    if enhet == "kohm":
        motstand = motstand / 1000
    return f"{motstand:.1f} {enhet}"

print(vis_motstand(12, 0.001))           # 12000.0 ohm
print(vis_motstand(12, 0.001, "kohm"))   # 12.0 kohm

Når vi ikkje oppgjev enhet, blir standardverdien "ohm" brukt. Ved behov kan vi oppgje "kohm" for kilo-ohm.

📝Oppgave 4

Lag ein funksjon celsius_til(temp, enhet="fahrenheit") som konverterer ein temperatur frå Celsius til anten Fahrenheit (F = C × 9/5 + 32) eller Kelvin (K = C + 273.15).

Test funksjonen med:
- celsius_til(100) → skal gje Fahrenheit
- celsius_til(0, "kelvin") → skal gje Kelvin

Scope: lokale og globale variablar
Scope handlar om kvar ein variabel er tilgjengeleg.

Lokale variablar er oppretta inne i ein funksjon og finst berre der:

def min_funksjon():
    x = 10          # Lokal variabel
    print(x)        # 10

min_funksjon()
print(x)            # Feil! x finnes ikke utenfor funksjonen

Globale variablar er oppretta utanfor funksjonar og kan lesast overalt:

melding = "Hei"     # Global variabel

def skriv():
    print(melding)  # Kan lese globale variabler

skriv()             # Hei

Viktig: Unngå å endre globale variablar inne i funksjonar. Bruk heller parametrar og returverdiar for å sende data inn og ut av funksjonar.

📝Oppgave 5

Kva blir skrive ut av denne koden?

x = 5

def endre():
    x = 10
    print(x)

endre()
print(x)

📝Oppgave 6

Lag eit program med tre funksjonar for å rekne ut elektrisk effekt på ulike måtar:

1. effekt_ui(spenning, strom) — reknar P = U × I
2. effekt_ri(motstand, strom) — reknar P = R × I²
3. effekt_ur(spenning, motstand) — reknar P = U² / R

Test alle tre funksjonane med verdiar der U = 12V, I = 2A, R = 6Ω og verifiser at alle gjev same resultat (24W).

Oppsummering

I dette kapittelet har du lært:

- Funksjonar er namngjevne kodeblokker som gjer programmet modulært og gjenbrukbart
- Parametrar og argument lèt funksjonar ta imot data
- Returverdiar med return gjev resultat tilbake frå funksjonen
- Standardverdiar for parametrar gjer funksjonskall meir fleksible
- Lokalt og globalt scope avgjer kvar variablar er tilgjengelege
- Funksjonar gjer koden lettare å lese, teste og vedlikehalde

Nøkkelomgrep


OmgrepForklaring
FunksjonNamngjeven kodeblokk som utfører ei oppgåve
ParameterVariabel i funksjonsdefinisjonen
ArgumentVerdi som blir sendt til funksjonen ved kall
ReturverdiVerdien funksjonen gjev tilbake
StandardverdiFørehandsdefinert verdi for ein parameter
ScopeOmrådet der ein variabel er tilgjengeleg

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.