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

Made with Slides.com