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
- Programmet definierar funktionen
greet. - Funktionen har parametern
name. - När funktionen anropas skickas ett namn in.
- 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
- Funktionen definieras med parametrar.
- När funktionen anropas skickas värden in.
- 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
- Funktionen
addtar emot två tal. - Funktionen räknar ut summan.
- Summan skickas tillbaka med
return. - 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
- funktioner högst upp i programmet
- 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
- Vad är en funktion i Python?
- Varför använder man funktioner i program?
- Vad betyder ordet
defi Python? - Vad är en parameter?
- Vad är skillnaden mellan en funktion som skriver ut ett värde och en funktion som använder return?
- Varför är det bra att dela upp större program i flera funktioner?
- Vad händer om man anropar en funktion flera gånger i ett program?
- När kan det vara bättre att använda
returnistället förprinti en funktion? - Ge ett exempel på en uppgift där en funktion kan vara användbar.
- Varför blir program ofta lättare att läsa när man använder funktioner?