Programmering 1

FUNKTIONER
MÅL
- Vad är en funktion, och varför är de användbara?
- Vad gör return?
- Att ta in parametrar till en funktion
- Vad är scope?
Vad är en funktion?
- En funktion är ett kodblock som körs endast när den blir anropad
- En funktion kan ta in värden samt skicka ut ett värde, exempelvis resultatet av en beräkning

Varför funktioner?
- Istället för att upprepa kod kan man anropa funktionen ifråga.
- DRY-principen - Don't Repeat Yourself
- Tillför struktur så att programmet blir överskådligare
- Om det inte fanns färdiga funktioner skulle man behöva uppfinna hjulet själv :-) Exempelvis skriva egen print-funktion, len() o.s.v
Definiera en funktion
def name_of_function():
# kodblock som körs när funktion kallas
Kodblocket i funktionen exekveras inte förrän funktionen anropas någonstans i programmet
Exempel
def say_hi():
# Kodblock som körs när funktion anropas
print("hi")
say_hi() # Funktion anropas och skriver ut "hi"
- Funktionsanropet har parenteser ()
- Funktionen kan endast exekveras efter att den är definierad
- Den här funktionen tar varken in några värden och skickar heller inte ut något resultat
Funktion med return
def say_hi():
return 'Hi!'
greeting = say_hi()
print(greeting) # 'Hi!'
- Det värde som står angivet vid return är det som skickas ut när funktionen exekveras (returneras)
- Return avslutar funktionen
Funktion med parameter
def say_hi(name):
msg = 'Hi!' + name + '!'
return msg
greeting = say_hi("John")
print(greeting) # 'Hi! John!
- En funktion kan ta in ett eller flera värden (kallas för parametrar)
- När funktionen anropas anges argument inom parenteser.
- Vid anrop av funktionen kopplas argumenten till de formella parameterna.
Funktionsdefinition + anrop
def add(a,b):
summa = a + b
return summa
sum = add(5,2)
print(sum) # 7
Funktionsnamn
Parametrar
Argument
Funktionsanrop
Funktions-
definition
Returvärde
DEMO!
Funktioner med return
Default parametrar
Undviker körningsfel med fel eller saknade parametrar!
def add(a,b):
return a+b
add() # Fel!
def add(a=10, b=20):
return a+b
add() # 30
add(1,10) # 11
I ett programmeringsspråk innebär “scope” den synlighet och levnadstid som variabler och parameterar har. Det handlar om minneshantering och undvika namnkonflikter.
Scope
Scope
Lokalt scope
def say_hello():
teacher = 'John'
return 'Hello ' + teacher
say_hello()
print(teacher) # NameError
Om variabeln deklareras inuti funktion (lokal variabel) har variabeln bara räckvidd (eng. scope) inuti den och kan inte nås utanför funktionen. När funktionen avslutas frigörs det minnet.
Scope
Globalt scope
x = 100
def my_function():
return x # Variabeln nås då den ligger i global scope
print(my_function())
Variabler som defineras utanför alla funktioner är globala variabler. De är synliga och åtkomliga inne i en funktion.
global
Göra en variabel åtkomlig utanför funktionen
total = 0
def increment():
total += 1
return total
increment() # Error!
total = 0
def increment():
global total
total += 1
return total
increment() # 1
Försök undvika användningen av global. I större program har man "systemvariabler" som är synliga överallt.
Dokumentera funktioner
def exponent(num, power=2):
"""exponent(num, power)raises num to
specified power. Power defaults to 2."""
return num ** power
print(exponent(2,3)) #8
print(exponent(3)) #9
print(exponent(7)) #49
print(exponent.__doc__) # Skriver ut funktionens dokumentation
Kallas docstring. Använd trippelcitat i början av funktionen
DEMO!
Scope och global
Programmering 1 i Python - Funktioner
By Sandra Larsson
Programmering 1 i Python - Funktioner
- 230