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 kallasKodblocket 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) # 7Funktionsnamn
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) # 11I 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) # NameErrorOm 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() # 1Fö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 dokumentationKallas 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
- 256