Python Functions
T. Issaris
18 Januari 2021
Functies
- Groeperen/structureren van code
- Herbruiken van code
Indentatie
Indentatie is zeer belangrijk in Python. Het geeft het begin en einde van een blok code aan. In onderstaand voorbeeld behoort elke regel die gelijk geindenteerd is met de eerste regel na de functienaam tot de functie:
def functienaam():
regel 1
regel 2
regel 3
regel 4
regel 5
Dus, in bovenstaande code behoren regel 1 en 2 tot de functie.
Functienamen
Voor de naamgeving van functies gelden dezelfde regels als voor variabelen:
- Combinatie van letters, cijfers en underscores
- Niet beginnen met een cijfer
Groeperen van code
def melding():
print("Beste Jan")
print("Morgen zal er geen school zijn.")
print("Met vriendelijke groet")
print("De directie")
# uitvoeren van de code
melding()
Parameters
De functie herbruikbaar maken door parameters.
def melding(naam):
print("Beste", naam)
print("Morgen zal er geen school zijn.")
print("Met vriendelijke groet")
print("De directie")
melding("Jan")
melding("Piet")
Return values/retourwaarden
Een functie kan ook een resultaat teruggeven aan de oproeper door middel van het “return” statement:
def kwadraat(x):
return x * x
resultaat = kwadraat(4)
print(resultaat) # toont 16
Geen return statement
Als een functie geen return value opgeeft, wordt er “None” teruggeven:
def kwadraat(x):
x * x
resultaat = kwadraat(4)
print(resultaat) # toont None
Geen return value
def groet():
print("hallo")
return
resultaat = groet() # toont "hallo"
print(resultaat) # toont None
Meerdere parameters
Er kunnen ook meerdere parameters doorgegeven worden:
def som(x, y, z):
return x + y + z
getal = som(1, 10, 100)
print(getal) # toont 111
Default parameters
Er kunnen ook standaard waarden voor parameters opgegeven worden. Als er dan geen argument voor de parameter opgegeven wordt, wordt de standaard waarde gebruikt:
def groet(x="Meneer"):
print("Hallo", x)
groet("Takis") # toont "Hallo Takis"
groet() # toont "Hallo Meneer"
Default parameters
def verhoog(x, y=1):
return x + y
getal = som(10)
print(getal) # toont 111
getal = som(10, 5)
print(getal) # toont 15
Meerdere return values/retourwaarden
Er kunnen ook meerdere resultaten teruggegeven worden:
def verschil_en_som(x, y):
return x - y, x + y
getal = verschil_en_som(10, 1)
print(getal) # toont 9, 11
Meerdere return values/retourwaarden
We kunnen de return values ook aan Verschillende variabelen toekennen:
def verschil_en_som(x, y):
return x - y, x + y
a, b = verschil_en_som(10, 1)
print(a) # toont 9
print(b) # toont 11
Named parameters
Laten toe om duidelijker te tonen welke parameter welke waarde krijgt.
Named parameters
def verschil(x, y):
return x - y
getal = verschil(100, 1)
print(getal) # toont 99
getal = verschil(1, 100)
print(getal) # toont -99
getal = verschil(x=100, y=1)
print(getal) # toont 99
getal = verschil(y=1, x=100)
print(getal) # toont 99
Positional parameters
def bmi(lengte, gewicht):
return gewicht/lengte**2
getal = bmi(1.82, 85)
print(getal) # toont 25.6611520...
getal = bmi(1.82, 85)
print(getal) # FOUT! toont 0.000251903...
Named parameters
def bmi(lengte, gewicht):
return gewicht/lengte**2
getal = bmi(lengte=1.82, gewicht=85)
print(getal) # toont 25.6611520...
getal = bmi(gewicht=85, lengte=1.82)
print(getal) # toont 25.6611520...
Named parameters
def bmi(lengte, gewicht):
return gewicht/lengte**2
getal = bmi(
gewicht=85,
lengte=1.82,
)
print(getal) # toont 25.6611520...
abs(x)
Geef de absolute waarde van een getal:
v = 100
print(abs(v)) # 100
v = -100
print(abs(v)) # 100
len(x)
Geef de lengte van een lijst of string:
v = [1, 2, 3]
print(len(v)) # 3
v = ["ab", "cd", "ef", 12]
print(len(v)) # 4
v = "ab"
print(len(v)) # 2
min/max
Geef het minimum of maximum van een lijst of parameters:
print(min(4,3,-10)) # -10
v = [100, 2, 3, 55, 3000, 88, -70]
print(max(v)) # 3000
print(min(v)) # -70
sorted()
Geef een gesorteerde kopie van een lijst:
a = [100, 2, 3, 55]
b = sorted(a)
print(b) # [2, 3, 55, 100]
De originele lijst blijft onaangepast!
sorted() vs .sort()
Geef een gesorteerde kopie van een lijst:
a = [100, 2, 3, 55]
b = a.sort()
print(b) # None
# a == [2, 3, 55, 100]
De originele lijst wordt aangepast!
range()
Het resultaat is geen lijst maar een “iterator”:
a = range(5)
print(a) # range(0, 5)
b = list(a)
print(b) # [0, 1, 2, 3, 4]
Daarom omzetting naar lijst om af te drukken.
reversed()
Het resultaat is geen lijst maar een “iterator”:
a = [100, 2, 3, 55]
b = reversed(a)
print(b) # <list_reverseiterator object at 0x...>
c = list(reversed(b))
print(c) # [55, 3, 2, 100]