Funktioner

I forbindelse med skildpadde-grafik blev der ofte tegnet et kvadrat – altså tegne en kasse med fire lige lange sider. Det fylder tre linjer kode at tegne et kvadrat, og hvis programmet skal tegne mange kvadrater er oftest smartere at skrive en kvadret funktion, som kan anvendes fra et andet sted i Python programmet. Et eksempel er herunder.

# eks4-1-1.py

import turtle

# Funktionen tegn kvadrat
def tegn_kvadrat(l):
    # Tegmer et kvadrat med laengden l
    for side in range(0,4):
        skildpadde.forward(l)
        skildpadde.right(90)
# Slut paa funktionen

# Goer vinduet og skildpadden klar
turtle.setup(width=450,height=300)
skildpadde = turtle.Turtle()

# Tegn fire kvadrat med sidelaengde 10, 20, 30 og 40
tegn_kvadrat(10)
tegn_kvadrat(20)
tegn_kvadrat(30)
tegn_kvadrat(40)

turtle.exitonclick()

 

Funktion skal have en definition, hvorfor det første ord i definition er def, som fortæller Python at nu kommer en funktion.

def navn_på_funktion(argumenter):

Funktionen skal have et navn, som vi selv vælger. Der gælder de samme regler for navne af funktioner som for variabler, og på samme møde er det bør navnet på funktioner fortælle hvad funktionen gør. Funktionen tager ingen, et eller flere argumenter, som er data til funktionen og de er i parentes efter funktionsnavnet. Hvis funktionen ikke tager argumenter har definition en start og slutparentes- altså (). Til sidet et kolon

De næste linjer følger det Python kode, som fortæller Python hvad funktionen skal gøre. Bemærk, at dette kode er indrykket på samme som løkker eller efter en if-betingelse.

I dette eksempel hedder funktion tegn_kvadrat, og den tegner et kvadrat. Her skal Python tegne en kvadrat med længden (antal skridt) l.

I Python programmet kalder vi på funktionen, når vi skal bruger den. Altså på samme som vi kalder på en hund med dens navn, og vi kan fortælle den, hvad den skal gøre med argumenterne.

Her er et eksempel, hvor funktiontager flere argumenterne og de vil blive adskilt med et komma.

# eks4-1-1.py

import turtle

# Funktionen tegn kvadrat
def tegn_kvadrat(l):
    # Tegn de fire sider
    for side in range(0,4):
        skildpadde.forward(l)
        skildpadde.right(90)

# Funkion tegn kvadrat i farve
def tegn_kvadrat_farve(l, farve):
    # Saet farven
    skildpadde.color(farve)
    # Kald funktion tegn_kvadrat
    tegn_kvadrat(l)

# Goer vindue og skildpaddek klar
turtle.setup(width=450,height=300)
skildpadde = turtle.Turtle()

tegn_kvadrat_farve(40, "red")

turtle.exitonclick()

Det første program er blevet udvidet med en funktion mere, som hedder tegn_kvadrat_farve, som tager to argumenter: længden l og farven farve. Funktioner kan kalde andre funktioner, hvilket kan gøre programmer mere overskuelige, hvis de bruges rigtigt (og mere uoverskuelige hvis de bruges forkert).

Et argument kan have en standardværdi, som funktionen bruger hvis den ikke sat, hvorfra den er kaldt. Det er vist her.

# eks4-1-1.py

import turtle

# Funktionen tegn kvadrat. Standard farve er sort
def tegn_kvadrat(l, farve="black"):
    skildpadde.color(farve)
    for side in range(0,4):
        skildpadde.forward(l)
        skildpadde.right(90)

# Goer vindue og skildpadde klar
turtle.setup(width=450,height=300)
skildpadde = turtle.Turtle()

# Tegn sort kvadrat (ingen farvearguemnt)
tegn_kvadrat(20)
# Tegn rødt kvadrat
tegn_kvadrat(40, "red")
# Tegn groent kvadrat
tegn_kvadrat(80, farve="green")

turtle.exitonclick()

 

Første gang programmet kalder tegn_kvadrat er der kun ét argument, som er længden. Den tegner et sort kvadrat, da argumentet farve ikke er med i kaldet og i definition af funktion er sat farve har standardværdien “black”.

I næste linje bliver tegn_kvadrat kaldet med en længde og en farve, hvilket tegner det midterste røde kvadrat. I den sidste linje med tegn_kvadrat sker det samme men vi sætter farve=”green”.

Navnet på argumentet er med i selve kaldet, hvilket kan være smart, hvis funktionen har mange argumenter med standardværdier, da det kun er nødvendigt at skrive de argumenter, som ikke have standardværdien.

 

Du har lært

  • Programmer kan blive delt op med funktioner.
  • Funktioner bliver defineret med def(argumenter): Argumenter kan have en standardværdi.
  • Funktioner bliver kaldt fra andre steder i Python programmet – evnt. fra andre funktioner.