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
def say_hi():
# Kodblock som körs när funktion anropas
print("hi")
say_hi() # Funktion anropas och skriver ut "hi"
def say_hi():
return 'Hi!'
greeting = say_hi()
print(greeting) # 'Hi!'
def say_hi(name):
msg = 'Hi!' + name + '!'
return msg
greeting = say_hi("John")
print(greeting) # 'Hi! John!
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
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.
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.
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.
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.
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