Als developer, wil ik code die ik vaker nodig heb één keer opschrijven in een functie, zodat ik een wijziging op één plek doe en een fout niet op drie plekken tegelijk zit.
def: code een naam geven
Een functie is een codeblok dat je een naam geeft zodat je het keer op keer kunt aanroepen.
Nu je herhaling herkent, verpak je het in een functie. Een functie heeft:
def — sleutelwoord: "maak een functie"is_validreturn — wat geeft het terug (optioneel)def is_valid(value):
if value < 0 or value > 100:
return False
return True
# Aanroepen
result = is_valid(50) # True
result = is_valid(150) # False
def get_welcome():
return "Welkom!"
# Aanroepen
msg = get_welcome() # "Welkom!"
def calculate_percentage(used, total):
return (used / total) * 100
pct = calculate_percentage(50, 200) # 25.0
if temp1 < 0 or temp1 > 100:
print("Ongeldig")
if temp2 < 0 or temp2 > 100:
print("Ongeldig")
if temp3 < 0 or temp3 > 100:
print("Ongeldig")
def is_valid(t):
return 0 <= t <= 100
if not is_valid(temp1):
print("Ongeldig")
if not is_valid(temp2):
print("Ongeldig")
if not is_valid(temp3):
print("Ongeldig")
Typ een getal en zie wat de functie teruggeeft:
Drie functies: één met een parameter, één met twee parameters en één zonder parameters. Draai het voorbeeld en volg welke functie welke regel oplevert.
Probeer daarna: voeg een vierde meting toe, of verander het bereik in
is_percentage() en kijk hoeveel plekken je daarvoor moet aanpassen.
Scenario: een serverscript controleert drie meetwaarden: CPU, schijf en geheugen. Alle drie moeten tussen 0 en 100% liggen. Nu staat die controle drie keer in het script. Schrijf functies zodat de controle nog maar op één plek staat.
Starter-variabelen:
cpu = 45
disk = 87
memory = 120 # Oeps!
Wat je moet schrijven:
is_percentage(value) die True geeft bij 0 t/m 100 en anders Falsecheck_all_sensors(cpu, disk, memory) die alleen True geeft als alle drie de waarden geldig zijncheck_all_sensors() False; met geheugen op 60 geeft hij True