Python Functions

T. Issaris

18 Januari 2021

Functies

  • Groeperen/structureren van code
  • Herbruiken van code

Definitie

def functienaam():
    ...

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...

Standaard functies

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!

Iterators

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]
// reveal.js plugins