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))12
12Probeer 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)12
None 12
24show_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.
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")Hallo, Mina!
Hoi, Jun!
geen nieuwe regel hierreturn 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)8000Variabelen 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.
| def | Begint een functiedefinitie |
| parameter | Een naam in de definitie: w in def area(w, h) |
| argument | Een waarde bij een aanroep: 4 in area(4, 3) |
| return | Geeft een waarde terug en beëindigt de functie |
| None | Wat een functie zonder return teruggeeft |
| lokale variabele | Een variabele die alleen binnen een functie bestaat |
- Wat drukt deze code af?
def double(x): return x * 2 print(double(7)) - Wat drukt deze code af?
def hello(): print("hoi") result = hello() print(result)hoi
hoihoi
NoneNonehoi
- Wat drukt deze code af?
def add(a, b): return a + b print(add(2, 3) * add(1, 1)) - Wat drukt deze code af?
def f(x): return x + 1 print("nooit") print(f(1)) - Wat drukt deze code af?
def greet(name, greeting="Hello"): return greeting + " " + name print(greet("Bo")) - 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)) - Wat drukt deze code af?
print("a", end="-") print("b") - 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])) - Hoe heten w en h in def area(w, h):?
- Argumenten
- Parameters
- Terugkeerwaarden
- Sleutelwoorden
- Zet de regels op volgorde zodat het programma 25 afdrukt.Uitvoer
25
- ‘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'.
- 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