Programmering nivå 1 med Python

Kapitel 8: Funktioner

I detta kapitel lär du dig att skapa egna funktioner, använda parametrar och returnera värden för att strukturera program bättre.

Innehållsförteckning

Klicka på ett avsnitt för att hoppa direkt.

8.1 Varför funktioner används

När program blir större kan koden bli svår att läsa och svår att ändra.

Ett sätt att göra program mer organiserade är att använda funktioner.

En funktion är en namngiven del av ett program som utför en bestämd uppgift.

I stället för att skriva samma kod flera gånger kan man lägga koden i en funktion och sedan använda den när den behövs.

Exempel utan funktion

Programmet skriver ut samma text flera gånger.

print("Hej och välkommen")
print("Hej och välkommen")
print("Hej och välkommen")

Det fungerar, men koden blir onödigt lång.

Om man vill ändra texten måste man ändra på flera ställen.

Exempel med funktion

Med en funktion kan man skriva koden en gång och sedan använda den flera gånger.

def greet():
    print("Hej och välkommen")

greet()
greet()
greet()

Här definieras först funktionen greet().

Sedan anropas funktionen tre gånger.

Varför funktioner är bra

Funktioner gör program

  • lättare att läsa
  • lättare att ändra
  • lättare att återanvända

De hjälper också programmeraren att dela upp ett program i mindre delar.

Det är särskilt bra när program börjar bli längre.

Viktigt att tänka på

I Python börjar en funktion med ordet def.

Efter namnet skriver man parenteser och kolon.

Koden inuti funktionen måste vara indragen.

Exempel

def greet():
    print("Hej och välkommen")

Övning

Skriv ett program som innehåller en funktion som skriver ut texten

Välkommen till Python

Anropa funktionen tre gånger.

8.2 Definiera funktioner

I Python skapas funktioner med ordet def.

Efter funktionsnamnet skriver man parenteser () och ett kolon :.

Koden som tillhör funktionen måste skrivas indragen på nästa rad.

Grundstruktur

def funktion():
    kod som ska köras

Exempel

Här definieras en funktion som hälsar på en person.

def greet(name):
    print("Hej", name)

Funktionen har en parameter som heter name.

En parameter är ett värde som skickas in till funktionen.

För att använda funktionen måste den anropas.

greet("Anna")
greet("Erik")

Programmet skriver ut

Hej Anna
Hej Erik

Hur programmet fungerar

  1. Programmet definierar funktionen greet.
  2. Funktionen har parametern name.
  3. När funktionen anropas skickas ett namn in.
  4. Funktionen skriver ut en hälsning.

Exempel med f-sträng

Man kan också använda f-strängar.

def greet(name):
    print(f"Hej {name}")

greet("Sara")

Övning

Skapa en funktion som heter welcome.

Funktionen ska ta emot ett namn och skriva ut

Välkommen {namn}

Exempel på användning

welcome("Alex")

Programmet ska skriva ut

Välkommen Alex

8.3 Parametrar

När en funktion behöver information för att kunna arbeta används parametrar.

En parameter är ett värde som skickas in till funktionen när den anropas.

Parametrar gör att samma funktion kan användas med olika värden.

Exempel

Här har funktionen en parameter som heter name.

def greet(name):
    print(f"Hej {name}")

När funktionen anropas skickas ett namn in.

greet("Anna")
greet("Erik")

Programmet skriver ut

Hej Anna
Hej Erik

Funktionen är densamma, men resultatet blir olika beroende på vilket värde som skickas in.

Flera parametrar

En funktion kan också ha flera parametrar.

def introduce(name, age):
    print(f"{name} är {age} år gammal")

introduce("Sara", 17)

Programmet skriver ut

Sara är 17 år gammal

Hur parametrar fungerar

  1. Funktionen definieras med parametrar.
  2. När funktionen anropas skickas värden in.
  3. Funktionen använder värdena i sin kod.

Övning

Skapa en funktion som heter add.

Funktionen ska ta emot två tal och skriva ut summan.

Exempel

add(3, 5)

Programmet ska skriva ut

Summan är 8

8.4 Return

Ibland vill man att en funktion ska ge tillbaka ett värde.

Då används ordet return.

return skickar tillbaka ett resultat från funktionen till den plats där funktionen anropas.

Exempel

Här finns en funktion som räknar ut summan av två tal.

def add(a, b):
    return a + b

När funktionen anropas returneras summan.

result = add(3, 5)
print(result)

Programmet skriver ut

8

Vad som händer i programmet

  1. Funktionen add tar emot två tal.
  2. Funktionen räknar ut summan.
  3. Summan skickas tillbaka med return.
  4. Resultatet sparas i variabeln result.

Varför return används

Med return kan funktioner

  • beräkna värden
  • skicka tillbaka resultat
  • användas i andra beräkningar

Exempel

def add(a, b):
    return a + b

total = add(10, 7)
print(f"Summan är {total}")

Programmet skriver ut

Summan är 17

Övning

Skapa en funktion som heter multiply.

Funktionen ska

  • ta emot två tal
  • returnera produkten av talen

Använd sedan funktionen och skriv ut resultatet.

8.5 Strukturera program

När program blir större är det viktigt att strukturera koden.

Det innebär att dela upp programmet i mindre delar som är lättare att läsa och förstå.

Funktioner hjälper programmeraren att organisera programmet.

Ett vanligt sätt att strukturera program är

  1. funktioner högst upp i programmet
  2. huvudprogram längst ner

Exempel

Här finns två funktioner som används i programmet.

def greet(name):
    print(f"Hej {name}")

def add(a, b):
    return a + b

Sedan används funktionerna i huvudprogrammet.

name = input("Vad heter du? ")
greet(name)
result = add(4, 6)
print(f"Summan är {result}")

Varför struktur är viktigt

Strukturerad kod gör program

  • lättare att läsa
  • lättare att felsöka
  • lättare att vidareutveckla

Det gör också att funktioner kan återanvändas flera gånger.

Bra vanor i Python

När man skriver program är det bra att

  • använda tydliga funktionsnamn
  • dela upp program i funktioner
  • skriva kod som är lätt att läsa

Övning

Skriv ett program med två funktioner.

Den första funktionen ska skriva ut en hälsning.

def greet(name):

Den andra funktionen ska räkna ut summan av två tal.

def add(a, b):

Använd funktionerna i programmet.

8.6 Större program

När program växer blir det viktigt att dela upp programmet i flera funktioner.

Varje funktion ska göra en tydlig uppgift.

Det gör programmet

  • lättare att läsa
  • lättare att testa
  • lättare att ändra

Ett större program kan därför bestå av flera funktioner som samarbetar.

Exempel

Här finns ett program som använder flera funktioner.

def greet(name):
    print(f"Hej {name}")

def add(a, b):
    return a + b

def multiply(a, b):
    return a * b

Huvudprogrammet använder funktionerna.

name = input("Vad heter du? ")
greet(name)
x = int(input("Skriv ett tal: "))
y = int(input("Skriv ett tal: "))
sum_result = add(x, y)
product_result = multiply(x, y)
print(f"Summan är {sum_result}")
print(f"Produkten är {product_result}")

Hur programmet är uppbyggt

Programmet består av tre delar

  • funktioner
  • huvudprogram
  • utskrift av resultat

Varje funktion gör en egen uppgift.

Fördelar med denna struktur

Programmet blir mer organiserat.

Det blir också lättare att

  • lägga till nya funktioner
  • ändra delar av programmet
  • återanvända funktioner i andra program

Övning

Skapa ett program med tre funktioner.

def greet(name)

ska skriva ut en hälsning.

def square(number)

ska returnera talet multiplicerat med sig självt.

def double(number)

ska returnera talet gånger två.

Programmet ska

  • fråga efter ett namn
  • fråga efter ett tal
  • använda funktionerna
  • skriva ut resultaten

8.7 Övningar

I dessa övningar ska du använda

  • funktioner
  • parametrar
  • return
  • variabler
  • input
  • f-strängar

Övning 1

Skapa en funktion som heter greet.

Funktionen ska ta emot ett namn och skriva ut

Hej {namn}

Exempel

greet("Anna")

Övning 2

Skapa en funktion som heter square.

Funktionen ska ta emot ett tal och returnera talet multiplicerat med sig självt.

Exempel

square(4)

Resultat

16

Övning 3

Skapa en funktion som heter add.

Funktionen ska ta emot två tal och returnera summan.

Programmet ska sedan skriva ut resultatet.

Övning 4

Skapa en funktion som heter age_in_five_years.

Funktionen ska ta emot en ålder och returnera hur gammal personen är om fem år.

Programmet ska fråga användaren efter ålder och skriva ut resultatet.

Övning 5

Skapa en funktion som heter area.

Funktionen ska ta emot två värden

  • bredd
  • höjd

Funktionen ska returnera arean av en rektangel.

Formel

area = bredd * höjd

Programmet ska skriva ut resultatet.

Övning 6

Skapa ett program med två funktioner.

def greet(name)

ska skriva ut en hälsning.

def double(number)

ska returnera talet gånger två.

Programmet ska

  • fråga efter ett namn
  • fråga efter ett tal
  • använda funktionerna
  • skriva ut resultatet

8.8 Reflektionsfrågor

  1. Vad är en funktion i Python?
  2. Varför använder man funktioner i program?
  3. Vad betyder ordet def i Python?
  4. Vad är en parameter?
  5. Vad är skillnaden mellan en funktion som skriver ut ett värde och en funktion som använder return?
  6. Varför är det bra att dela upp större program i flera funktioner?
  7. Vad händer om man anropar en funktion flera gånger i ett program?
  8. När kan det vara bättre att använda return istället för print i en funktion?
  9. Ge ett exempel på en uppgift där en funktion kan vara användbar.
  10. Varför blir program ofta lättare att läsa när man använder funktioner?