Allt du behöver veta om funktioner i Python


Nyckelord: Funktioner i Python

I Python, definierar (skapar) man en funktion genom att ange vilket namn funktionen ska ha och om funktionen ska ha några inparametrar. En funktion slutar alltid med kommandot return (returnera ett resultat), eller om alla operationer i funktionen har utförts.

Vad är en funktion i Python?

När man programmerar är det vanligt att man vill att samma sak ska hända flera gånger i sitt program. För att hantera detta, använder man funktioner. Genom att skapa en funktion, definierar (anger) man en samling av operationer som programmet kommer exekvera (köra) varje gång man anropar (kallar på) den.

En funktion i Python är ett definierat kodblock som enbart kommer exekvera när man anropar den.

Funktioner i Python

  • Är ett definierat kodblock som enbart kommer exekvera (köra) när man anropar (kallar på) funktionen.
  • Kan få inparametrar (värden) som man kan använda i funktionen.
  • Kan returnera värden, det vill säga, skicka ut värden ut från funktionen. Ofta skickar man ut resultatet från en beräkning.

Inkapsling – Håll isär din kod

En viktig princip inom all programmering är inkapsling. Det innebär att varje del av programmet ska “sköta sitt”. Istället för att skriva stora funktioner som hanterar olika saker, väljer man att kapsla in varje liten del av programmet. Tänk dig en funktion som en pusselbit, där varje pusselbit gör “minsta möjliga” beräkning. Genom denna viktiga princip kan man kombinera logiken från flera olika funktioner som tillsammans bygger upp stora program. Programmering är alltså som ett pussel av funktioner som man kombinerar med varandra för att skapa stora och smarta program.

Hur skapar man en funktion i Python?

Det är enkelt att skapa en funktion i Python. När man definierar (skapar) en funktion använder man det reserverade ordet def följt av funktionsnamnet. Man anger även om funktionen ska ha några inparametrar.

def funktion_namn(inparameter):
    """Funktionsdokumentation"""
    operation / operationer
    return värde

De operationer som man vill att funktionen ska köra när man anropar den, kodar man med indentering (indrag).

En funktion slutar alltid med det reserverade ordet return som avslutar funktionen och returnerar ett slutvärde. Om return inte används, körs funktionen till sista operationen är slutförd. Man kan även använda return utan att returnera något värde.

En bra praxis när man skapar funktioner är att lägga till en funktionsbeskrivning (funktionsdokumentation) som förklarar vad funktionen gör. Det är inget måste att ange en funktionsbeskrivning men allt eftersom programmet ökar i storlek och blir mer komplext, hjälper det ofta mycket om man anger vad varje funktion gör.

Exempel: Hur skapar man en funktion i Python

I nedanstående exempel visar vi ett exempel på hur man kan definierar en funktion i Python. Först anger man det reserverade ordet def följt av funktionsnamnet (i detta fall my_function). Inom parantes anger man om funktionen ska ha några inparametrar. I detta fall får my_function en inparameter som heter x.

def my_function(x):                        # Definerar en ny funktion som heter my_function och tar en inparameter med namnet x. 
    """Multiplicerar inparametern med 3""" # Beskrivning av vad funktionen gör för något. 
    return 3 * x                           # Det funktionen gör är att returnera inparameterns värde multiplicerat med 3.

Det enda funktionen gör är alltså att ta ett värde, multiplicera värdet med 3 och sedan returnera värdet.

I nedanstående exempel anropar vi funktionen my_function och skickar in värdet 5 i funktionsanropet:

result = my_function(5)   # Anropa funktionen och tilldela värdet som returneras från funktionen till variabeln result 
print(result)             # Skriv ut värdet på variabeln result

Kommer funktioner alltså returnera 15.

Om man är osäker på vad funktionen faktiskt gör, kan man anropa funktionsbeskrivningen med help() som returnerar funktionsdokumentationen:

help(my_function)

ger då utskriften:

Help on function my_function in module __main__:

my_function(x)
    Multiplicerar inparametern med 3

Anropa funktioner i Python

Vi kan nu anropa vår funktion flera gånger om. Exempelvis i följande exempel:

print(my_function(1))
print(my_function(5))
print(my_function(3))
print(my_function(8))

ger:

3
15
9
24

Vi har alltså med väldigt lite kod kunnat skapa ett effektivt och koncist program.

Genom att skapa flera små funktioner i Python, kan dessa användas för att skapa stora program. På så sätt blir det mycket lättare att programmera eftersom man slipper koda samma sak flera gånger. Funktionerna blir byggstenarna i större program. 

Exempel: Skapa och anropa funktioner i Python

Vi ska först skapa en funktion som räknar ut arean på en cirkel. Den enda inparametern som funktionen kommer ha är radien. Vi skickar alltså in radien och får tillbaka arean.

import math
def area_cirkel(radie):
    """Returnerar arean på en cirkel"""
    return radie*radie*math.pi

Vi kan testa funktionen genom att anropa den. Nedan visas ett exempel då radien på cirkeln är 4 eller 8:

print("Arean på cirkeln är", area_cirkel(4))
print("Arean på cirkeln är", area_cirkel(8))

Vilken ger utskriften:

Arean på cirkeln är 50.26548245743669
Arean på cirkeln är 201.06192982974676

På samma sätt skapar vi en funktion som räknar ut arean på en kvadrat. Vi skickar in bredden på kvadraten som inparameter och får tillbaka arean på kvadraten.

def area_kvadrat(x):
    """Returnerar arean på en kvadrat"""
    return x * x

Anropar vi funktionen när exempelvis bredden är 2, eller 5:

print("Arean på kvadraten är", area_kvadrat(2))
print("Arean på kvadraten är", area_kvadrat(5))

får vi utskriften:

Arean på kvadraten är 4
Arean på kvadraten är 25

Vi använder oss av dessa två funktioner i en tredje funktion som avgör om kvadraten eller cirkeln har störst area. Vi skickar in bredden på kvadraten och radien på cirkeln som inparametrar.

def largest_area(bredd, radie):
    """Returnerar om kvadraten eller cirkeln har störst area, givet bredden på kvadraten och radien på cirkeln"""

    kvadrat = area_kvadrat(bredd)     # Anropar funktionen som räknar ut arean på kvadraten                  
    cirkel = area_cirkel(radie)       # Anropar funktionen som räknar ut arean på cirkeln

    # Avgör om kvadraten eller cirkeln är störst
    if kvadrat == cirkel:
        print("Kvadraten och cirkeln är lika stora!")
    elif kvadrat > cirkel:
        print("Kvadraten har större area än cirkeln")
    else:
        print("Cirkeln har större area än kvadraten")

    print("Arean på kvadraten är", kvadrat, "och arean på cirkeln är", cirkel)

När vi anropar funktionen exempelvis då bredden på kvadraten är 4 och radien på cirkeln är 3:

largest_area(bredd=4, radie=3)

Får vi utskriften:

Cirkeln har större area än kvadraten
Arean på kvadraten är 16 och arean på cirkeln är 28.274333882308138

Nu kan du använda din färdiga funktion hur många gånger du vill, utan att behöva programmera ny kod!

Definera standardparametrar

Om man vill, kan man även definera standardparametrar i en funktion.

def dummy_function(text="Programmera Python"):
    print("Texten som skrivs ut är:", text)

Om man inte anger någon inparameter i detta fall, blir inparametern automatiskt "Programmera Python".

Anropar man funktionen utan och med inparameter

dummy_function()
dummy_function("Annan inparameter")

blir alltså utskriften:
Texten som skrivs ut är: Programmera Python
Texten som skrivs ut är: Annan inparameter

Vanliga frågor och svar: funktioner i Python

Har du koll på allt? Här har vi samlat ett par vanliga frågor och svar om funktioner i Python.

Vad är en funktion i Python?

En funktion är ett block av organiserad och återanvändbar kod som används för att utföra en specifik uppgift.

Hur skapar man en funktion i Python?

Funktioner skapas med def-nyckelordet följt av funktionsnamnet och parenteser.

Hur anropar man en funktion?

En funktion anropas genom att skriva dess namn följt av parenteser.

Vad är inparametrar i en funktion?

Inparametrar är värden som skickas in i en funktion som input.

Hur returnerar man ett värde från en funktion?

Använd return-nyckelordet följt av det värde du vill returnera.


To top