edubun
Nederlands

Je eigen functies schrijven

Een functie die zonder return eindigt geeft None terug. Daarom toont print(print("hoi")) hoi en daarna None.

Twee functies die op het scherm hetzelfde lijken

De meeste beginners denken dat een waarde tonen en teruggeven hetzelfde zijn. Hier zijn twee functies die allebei de rechthoekoppervlakte lijken te ‘geven’. def begint een functiedefinitie: een naam, de invoer tussen haakjes, een dubbele punt en een ingesprongen blok. Voer het programma uit en beide uitvoerregels lijken gelijk.

def show_area(w, h):
    print(w * h)

def area(w, h):
    return w * h

show_area(4, 3)
print(area(4, 3))
Uitvoer
12
12

Probeer nu de resultaten in een berekening te gebruiken. Het verschil verschijnt meteen.

def show_area(w, h):
    print(w * h)

def area(w, h):
    return w * h

a = show_area(4, 3)
b = area(4, 3)
print(a, b)
print(b * 2)
Uitvoer
12
None 12
24

show_area drukt 12 af en eindigt. Het geeft niets terug; een functie die niets teruggeeft retourneert de speciale waarde None. Dus a is None. area drukt niets af; het geeft 12 terug aan de aanroepende regel en die 12 kan worden opgeslagen, afgedrukt of verdubbeld. Afdrukken is voor mensen aan het scherm. Teruggeven is voor de rest van het programma. Geef een resultaat terug als je het later wilt gebruiken.

Een functie krijgt argumenten, voert het blok ermee uit en geeft met return één waarde terug. area(4, 3) wordt overal waar het staat 12.

Parameters zijn de namen, argumenten de waarden

In def area(w, h): zijn w en h parameters: namen die alleen binnen de functie bestaan. In area(4, 3) zijn 4 en 3 argumenten: waarden die de namen voor die aanroep invullen. Ze worden op positie gekoppeld, dus het eerste argument gaat naar de eerste parameter. Bij het verkeerde aantal argumenten stopt Python met een TypeError die de ontbrekende parameter noemt.

Een parameter kan een standaardwaarde hebben, met = in de definitie. Aanroepers kunnen dat argument weglaten en dan geldt de standaard. De Python-handleiding toont dit bij functiedefinities en het komt overal in ingebouwde functies voor. print zelf heeft er een: de parameter end is standaard een nieuwe regel.

def greet(name, greeting="Hallo"):
    return f"{greeting}, {name}!"

print(greet("Mina"))
print(greet("Jun", "Hoi"))
print("geen nieuwe regel", end=" ")
print("hier")
Uitvoer
Hallo, Mina!
Hoi, Jun!
geen nieuwe regel hier

return beëindigt de functie meteen

Een functie stopt bij de eerste bereikte return, ook als er nog regels onder staan. Vroege returns handelen bijzondere gevallen dus overzichtelijk af. De functie hieronder gebruikt de toegangsregel uit het hoofdstuk over if, nu verpakt zodat elk programmadeel een prijs kan opvragen.

def ticket_price(age):
    if age < 7:
        return 0
    if age <= 18:
        return 3000
    return 5000

family = [40, 15, 5]
total = 0
for age in family:
    total += ticket_price(age)
print(total)
Uitvoer
8000

Variabelen die binnen een functie worden gemaakt zijn lokaal: ze bestaan tijdens de uitvoering en verdwijnen aan het einde. Een total binnen een functie heeft niets met een total erbuiten te maken. Daardoor kun je een functie hergebruiken zonder zorgen over namen elders in het programma.

defBegint een functiedefinitie
parameterEen naam in de definitie: w in def area(w, h)
argumentEen waarde bij een aanroep: 4 in area(4, 3)
returnGeeft een waarde terug en beëindigt de functie
NoneWat een functie zonder return teruggeeft
lokale variabeleEen variabele die alleen binnen een functie bestaat
  1. Wat drukt deze code af?
    def double(x):
        return x * 2
    
    print(double(7))
  2. Wat drukt deze code af?
    def hello():
        print("hoi")
    
    result = hello()
    print(result)
    • hoi
      hoi
    • hoi
      None
    • None
    • hoi
  3. Wat drukt deze code af?
    def add(a, b):
        return a + b
    
    print(add(2, 3) * add(1, 1))
  4. Wat drukt deze code af?
    def f(x):
        return x + 1
        print("nooit")
    
    print(f(1))
  5. Wat drukt deze code af?
    def greet(name, greeting="Hello"):
        return greeting + " " + name
    
    print(greet("Bo"))
  6. Wat drukt deze code af?
    def sign(n):
        if n > 0:
            return "plus"
        if n < 0:
            return "minus"
        return "zero"
    
    print(sign(-4), sign(0))
  7. Wat drukt deze code af?
    print("a", end="-")
    print("b")
  8. Wat drukt deze code af?
    def total_of(nums):
        t = 0
        for n in nums:
            t += n
        return t
    
    print(total_of([4, 5, 6]))
  9. Hoe heten w en h in def area(w, h):?
    • Argumenten
    • Parameters
    • Terugkeerwaarden
    • Sleutelwoorden
  10. Zet de regels op volgorde zodat het programma 25 afdrukt.
    Uitvoer
    25
Veelgemaakte fouten
  • ‘Een functie die het antwoord afdrukt heeft het teruggegeven.’ Afdrukken toont alleen de waarde. De functie geeft nog None terug, dus x = show_area(4, 3) maakt x None en x * 2 stopt met TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'.
  • ‘Ik kan een functie boven de definitieregel aanroepen.’ Python werkt van bovenaf, dus de naam bestaat daar nog niet: NameError: name 'area' is not defined. Zet def boven de eerste aanroep.
  • ‘Een argument weglaten maakt het gewoon nul.’ Zonder standaardwaarde stopt Python: area(4) geeft TypeError: area() missing 1 required positional argument: 'h'.
Voor de docentAfdrukken met teruggeven verwarren is hier het meest voorkomende misverstand en blijft verborgen doordat het scherm hetzelfde oogt. Laat leerlingen het resultaat in een variabele opslaan en in een tweede berekening gebruiken; None verschijnt meteen. Taal helpt: zeg dat een functie een waarde ‘teruggeeft’ en bewaar ‘toont’ voor print. Het Koreaanse informaticacurriculum voor de onderbouw koppelt functies gebruiken aan fouten vinden en herstellen, dus ontbrekende argumenten en aanroepen vóór def zijn goed materiaal voor een korte foutzoekoefening.
Belangrijkste punten
  • def name(params): begint een functie; het blok springt in.
  • return geeft een waarde terug en beëindigt de functie.
  • print toont een waarde en geeft haar niet terug. Geen return betekent None.
  • Argumenten vullen parameters op positie; standaarden vullen ontbrekende argumenten.
  • Variabelen binnen een functie zijn lokaal voor die functie.
Bronnen van deze cursus (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Geraadpleegd: 2026-10-19