Ga naar hoofdinhoud

Python-functies: zo schrijf en roep je functies aan

Ontdek hoe je herbruikbare en efficiënte Python-functies schrijft. Beheers parameters, return-statements en geavanceerde onderwerpen zoals lambda-functies. Orden je code beter met main() en andere best practices.
Bijgewerkt 18 mei 2026  · 14 min lezen
datacamp-banner voor carrièremakende pythonvaardigheden

Functies zijn een essentieel onderdeel van de programmeertaal Python: je bent vast al enkele van de vele geweldige functies tegengekomen en hebt ze gebruikt, ofwel ingebouwd in Python zelf of afkomstig uit het bibliotheek-ecosysteem. Als data scientist zul je echter voortdurend je eigen functies moeten schrijven om problemen op te lossen die je data je voorschotelt. 

Deze tutorial gebruikt de syntax van Python 3. Alle voorbeelden werken op Python 3.10+ en zijn bijgewerkt naar moderne conventies (f-strings, type hints, alleen-positionele en alleen-keyword-parameters). De huidige stabiele release is Python 3.14.

Wil je alle voorbeeldcode in deze tutorial eenvoudig zelf draaien, dan kun je gratis een DataLab-werkboek aanmaken met vooraf geïnstalleerde Python en alle codevoorbeelden. Wil je meer oefenen met het schrijven van Python-functies, bekijk dan deze praktische DataCamp-oefening of probeer onze cursus Python Data Science Toolbox!

Functies in Python

In programmeren gebruik je functies om een set instructies te bundelen die je herhaaldelijk wilt gebruiken of die, vanwege hun complexiteit, beter in een subprogramma zijn ondergebracht en bij behoefte worden aangeroepen. Een functie is dus een stukje code dat is geschreven om een specifieke taak uit te voeren. Voor die specifieke taak heeft de functie mogelijk meerdere inputs nodig, maar dat hoeft niet. Wanneer de taak is uitgevoerd, kan de functie één of meer waarden retourneren, maar dat hoeft ook niet.

Er zijn drie soorten functies in Python:

  • Ingebouwde functies, zoals help() om hulp te vragen, min() om de minimumwaarde op te halen, print() om een object naar de terminal te printen,… Een overzicht met meer van deze functies vind je hier.

  • Door de gebruiker gedefinieerde functies (User-Defined Functions, UDF's), functies die gebruikers zelf maken om hen te helpen; en

  • Anonieme functies, ook wel lambda-functies genoemd omdat ze niet worden gedeclareerd met het standaardtrefwoord def.

Functies vs. methoden

Een methode verwijst naar een functie die onderdeel is van een klasse. Je benadert die via een instantie of object van de klasse. Een functie heeft die beperking niet: dat is gewoon een op zichzelf staande functie. Dit betekent dat alle methoden functies zijn, maar niet alle functies methoden.

Bekijk dit voorbeeld, waarin je eerst een functie plus() definieert en daarna een Summation-klasse met een sum()-methode:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGEgZnVuY3Rpb24gYHBsdXMoKWBcbmRlZiBwbHVzKGEsYik6XG4gIHJldHVybiBhICsgYlxuICBcbiMgQ3JlYXRlIGEgYFN1bW1hdGlvbmAgY2xhc3NcbmNsYXNzIFN1bW1hdGlvbihvYmplY3QpOlxuICBkZWYgc3VtKHNlbGYsIGEsIGIpOlxuICAgIHNlbGYuY29udGVudHMgPSBhICsgYlxuICAgIHJldHVybiBzZWxmLmNvbnRlbnRzICJ9

Als je nu de sum()-methode die deel uitmaakt van de Summation-klasse wilt aanroepen, moet je eerst een instantie of object van die klasse definiëren. Laten we zo'n object definiëren:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIHBsdXMoYSxiKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuY2xhc3MgU3VtbWF0aW9uKG9iamVjdCk6XG4gIGRlZiBzdW0oc2VsZiwgYSwgYik6XG4gICAgc2VsZi5jb250ZW50cyA9IGEgKyBiXG4gICAgcmV0dXJuIHNlbGYuY29udGVudHMgIiwic2FtcGxlIjoiIyBJbnN0YW50aWF0ZSBgU3VtbWF0aW9uYCBjbGFzcyB0byBjYWxsIGBzdW0oKWBcbnN1bUluc3RhbmNlID0gU3VtbWF0aW9uKClcbnN1bUluc3RhbmNlLnN1bSgxLDIpIn0=

Onthoud dat deze instantiering niet nodig is wanneer je de functie plus() wilt aanroepen! Je kunt in het DataCamp Light-codeblok zonder problemen plus(1,2) uitvoeren!

Parameters vs. argumenten

Parameters zijn de namen die je gebruikt bij het definiëren van een functie of methode, en waar de argumenten aan worden gekoppeld. Met andere woorden, argumenten zijn de zaken die je meegeeft aan een functie- of methodeaanroep, terwijl de code van de functie of methode naar de argumenten verwijst via hun parameternamen.

Bekijk het volgende voorbeeld en kijk terug naar het bovenstaande DataCamp Light-blok: je geeft twee argumenten door aan de sum()-methode van de Summation-klasse, hoewel je eerder drie parameters had gedefinieerd, namelijk self, a en b.

Wat is er met self gebeurd?

Het eerste argument van elke klassemethode is altijd een verwijzing naar de huidige instantie van de klasse, in dit geval Summation. Volgens de conventie heet dit argument self.

Dit alles betekent dat je in dit geval de verwijzing naar self niet doorgeeft, omdat self de parameternaam is voor een impliciet doorgegeven argument dat verwijst naar de instantie waarmee een methode wordt aangeroepen. Het wordt impliciet in de argumentenlijst ingevoegd.

Hoe definieer je een functie: User-Defined Functions (UDF's)

De vier stappen om een functie in Python te definiëren zijn:

  1. Gebruik het trefwoord def om de functie te declareren en zet daar direct de functienaam achter.

  2. Voeg parameters toe aan de functie: die horen tussen de haakjes van de functie. Sluit de regel af met een dubbele punt.

  3. Voeg de statements toe die de functie moet uitvoeren.

  4. Eindig je functie met een return-statement als de functie iets moet opleveren. Zonder return-statement retourneert je functie het object None.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4gIn0=

Natuurlijk worden je functies gaandeweg complexer: je kunt for-loops, flow control, … en meer toevoegen om ze verfijnder te maken:

def hello():
    name = input("Enter your name: ")
    if name:
        print(f"Hello {name}")
    else:
        print("Hello World")

hello()

In de bovenstaande functie vraag je de gebruiker om een naam op te geven. Als er geen naam wordt gegeven, print de functie “Hello World”. Anders krijgt de gebruiker een persoonlijke “Hello”-reactie.

Onthoud ook dat je één of meer functieparameters voor je UDF kunt definiëren. Je leert hier meer over in de sectie Functieargumenten. Daarnaast kan je functie één of meerdere waarden retourneren, maar dat hoeft niet.

Het return-statement

Omdat je in je UDF hello() iets print, hoef je dat niet per se te retourneren. Er is geen verschil tussen de functie hierboven en deze:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsb19ub3JldHVybigpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpICJ9

Als je echter verder wilt werken met het resultaat van je functie en er bewerkingen op wilt uitvoeren, moet je het return-statement gebruiken om daadwerkelijk een waarde te retourneren, zoals een string, een integer, …. Bekijk het volgende scenario, waarin hello() een string "hello" retourneert, terwijl de functie hello_noreturn() None retourneert:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4oXCJoZWxsb1wiKVxuXG5kZWYgaGVsbG9fbm9yZXR1cm4oKTpcbiAgcHJpbnQoXCJIZWxsbyBXb3JsZFwiKVxuICBcbiMgTXVsdGlwbHkgdGhlIG91dHB1dCBvZiBgaGVsbG8oKWAgd2l0aCAyIFxuaGVsbG8oKSAqIDJcblxuIyAoVHJ5IHRvKSBtdWx0aXBseSB0aGUgb3V0cHV0IG9mIGBoZWxsb19ub3JldHVybigpYCB3aXRoIDIgXG5oZWxsb19ub3JldHVybigpICogMiJ9

De tweede functie geeft een fout omdat je geen bewerkingen kunt uitvoeren met een None. Je krijgt een TypeError die aangeeft dat je de vermenigvuldigingsoperatie niet kunt uitvoeren voor NoneType (de None die het resultaat is van hello_noreturn()) en int (2).

Tip functies stoppen onmiddellijk wanneer ze een return-statement tegenkomen, zelfs als dat betekent dat ze geen waarde retourneren:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBydW4oKTpcbiAgZm9yIHggaW4gcmFuZ2UoMTApOlxuICAgICBpZiB4ID09IDI6XG4gICAgICAgcmV0dXJuXG4gIHByaW50KFwiUnVuIVwiKVxuICBcbnJ1bigpIn0=

Een andere noemenswaardige zaak bij het werken met het return-statement is dat je het kunt gebruiken om meerdere waarden te retourneren. Hiervoor maak je gebruik van tuples.

Onthoud dat deze datastructuur erg lijkt op die van een lijst: ze kan meerdere waarden bevatten. Tuples zijn echter immutabel, wat betekent dat je de waarden die erin zijn opgeslagen niet kunt wijzigen! Je construeert ze met behulp van dubbele haakjes (). Je kunt tuples uitpakken in meerdere variabelen met behulp van de komma en de toekenningsoperator.

Bekijk het volgende voorbeeld om te begrijpen hoe je functie meerdere waarden kan retourneren:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgXG5kZWYgcGx1cyhhLGIpOlxuICBzdW0gPSBhICsgYlxuICByZXR1cm4gKHN1bSwgYSlcblxuIyBDYWxsIGBwbHVzKClgIGFuZCB1bnBhY2sgdmFyaWFibGVzIFxuc3VtLCBhID0gcGx1cygzLDQpXG5cbiMgUHJpbnQgYHN1bSgpYFxucHJpbnQoc3VtKSJ9

Let op dat het return-statement return sum, a hetzelfde resultaat heeft als return (sum, a): het eerste pakt sum en a onder water in een tuple!

Hoe roep je een functie aan

In de vorige secties heb je al veel voorbeelden gezien van hoe je een functie kunt aanroepen. Een functie aanroepen betekent dat je de functie die je hebt gedefinieerd uitvoert - ofwel direct vanuit de Python-prompt, of via een andere functie (zoals je zult zien in de sectie “Geneste functies”).

Roep je nieuw gedefinieerde functie hello() aan door simpelweg hello() uit te voeren, zoals in het onderstaande DataCamp Light-blok:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiJoZWxsbygpIn0=

Hoe voeg je docstrings toe aan een Python-functie

Nog een essentieel aspect van functies schrijven in Python: docstrings. Docstrings beschrijven wat je functie doet, zoals de berekeningen die ze uitvoert of de returnwaarden. Deze beschrijvingen dienen als documentatie voor je functie zodat iedereen die de docstring van je functie leest, begrijpt wat je functie doet zonder alle code in de functiedefinitie te hoeven nalopen.

Functie-docstrings plaats je direct op de regel na de functieheader en ze staan tussen driedubbele aanhalingstekens. Een passende docstring voor je hello()-functie is: ‘Print “Hello World”’.

def hello() -> None:
    """Prints "Hello World"."""
    print("Hello World")

Let op dat docstrings langer kunnen zijn dan het voorbeeld hier. Wil je docstrings uitgebreider bestuderen, bekijk dan vooral wat GitHub-repositories van Python-bibliotheken zoals scikit-learn of pandas; daar vind je volop voorbeelden!

Type hints

Nauw verwant aan docstrings — en bijna even gebruikelijk in moderne Python-code — zijn type hints. Sinds Python 3.5 kun je de parameters van je functie en de returnwaarde annoteren met de verwachte types. Hier is het simpelste voorbeeld:

def plus(a: int, b: int) -> int:
    return a + b

De : int achter elke parameter zegt "dit moet een integer zijn", en de -> int achter de haakjes zegt "deze functie retourneert een integer". Python zelf handhaaft deze annotaties niet tijdens runtime — je kunt nog steeds een string doorgeven aan plus() en Python klaagt pas wanneer er iets stukgaat. Maar tools zoals mypy, pyright en de typecheckers die zijn ingebouwd in editors als VS Code en PyCharm gebruiken deze hints om bugs te vinden voordat je je code überhaupt draait.

Voor complexere types kun je ingebouwde generics direct gebruiken (Python 3.9+) of importeren uit de module typing:

def greet(names: list[str]) -> None:
    for name in names:
        print(f"Hello {name}")

def find_user(user_id: int) -> dict | None:
    # returns the user dict, or None if not found
    ...
Type hints zijn optioneel, maar gelden als best practice voor elke functie die je opnieuw wilt gebruiken, delen of waar je over zes maanden op terugkomt. Ze fungeren als machine-checkbare documentatie — je IDE vult op basis hiervan automatisch aan, vangt typfouten af en waarschuwt wanneer je een verkeerd type doorgeeft.

Functieargumenten in Python

Eerder leerde je het verschil tussen parameters en argumenten. Kort gezegd: argumenten zijn de zaken die je meegeeft aan een functie- of methodeaanroep, terwijl de code van de functie of methode naar de argumenten verwijst via hun parameternamen. Er zijn vier soorten argumenten die Python-UDF's kunnen aannemen:

  • Standaardargumenten
  • Vereiste argumenten
  • Keyword-argumenten
  • Variabel aantal argumenten

Standaardargumenten

Standaardargumenten zijn argumenten die een standaardwaarde aannemen als er tijdens de functieaanroep geen argumentwaarde wordt doorgegeven. Je wijst deze standaardwaarde toe met de toekenningsoperator =, net zoals in het volgende voorbeeld:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIgPSAyKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuIyBDYWxsIGBwbHVzKClgIHdpdGggb25seSBgYWAgcGFyYW1ldGVyXG5wbHVzKGE9MSlcblxuIyBDYWxsIGBwbHVzKClgIHdpdGggYGFgIGFuZCBgYmAgcGFyYW1ldGVyc1xucGx1cyhhPTEsIGI9MykifQ==

Vereiste argumenten

Zoals de naam al aangeeft, zijn de vereiste argumenten van een UDF de argumenten die erbij moeten zitten. Deze argumenten moeten tijdens de functieaanroep worden doorgegeven en in precies de juiste volgorde, zoals in het volgende voorbeeld:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGIifQ==

Je hebt argumenten nodig die mappen naar zowel de parameter a als b om de functie aan te roepen zonder fouten te krijgen. Als je a en b omwisselt, zal het resultaat niet verschillen, maar dat kan wel als je plus() als volgt wijzigt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYS9iIn0=

Keyword-argumenten

Als je zeker wilt weten dat je alle parameters in de juiste volgorde aanroept, kun je keyword-argumenten gebruiken bij je functieaanroep. Daarmee identificeer je de argumenten via hun parameternaam. Laten we het voorbeeld van hierboven nemen om dit te verduidelijken:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIFxucGx1cygyLDMpXG5cbiMgQ2FsbCBgcGx1cygpYCBmdW5jdGlvbiB3aXRoIGtleXdvcmQgYXJndW1lbnRzXG5wbHVzKGE9MSwgYj0yKSJ9

Let op dat je met keyword-argumenten ook de volgorde van de parameters kunt omdraaien en toch hetzelfde resultaat krijgt wanneer je je functie uitvoert:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3VtZW50c1xucGx1cyhiPTIsIGE9MSkifQ==

Variabel aantal argumenten

In gevallen waarin je het exacte aantal argumenten dat je aan een functie wilt doorgeven niet kent, kun je de volgende syntax met *args gebruiken:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgcmV0dXJuIHN1bShhcmdzKVxuXG4jIENhbGN1bGF0ZSB0aGUgc3VtXG5wbHVzKDEsNCw1KSJ9

De asterisk (*) staat vóór de variabelenaam die de waarden bevat van alle niet-keyword variabele argumenten. Merk op dat je hier net zo goed *varint, *var_int_args of een andere naam aan de functie plus() had kunnen doorgeven.

Tip: probeer *args te vervangen door een andere naam die de asterisk bevat. Je zult zien dat de bovenstaande code gewoon blijft werken!

Je ziet dat de bovenstaande functie gebruikmaakt van de ingebouwde Python-functie sum() om alle argumenten op te tellen die aan plus() worden doorgegeven. 

Globale vs. lokale variabelen

In het algemeen hebben variabelen die binnen een functiebody zijn gedefinieerd een lokale scope, en variabelen die daarbuiten zijn gedefinieerd hebben een globale scope. Dat betekent dat lokale variabelen binnen een functielichaam zijn gedefinieerd en alleen binnen die functie toegankelijk zijn, terwijl globale variabelen door alle functies in je script kunnen worden benaderd:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgR2xvYmFsIHZhcmlhYmxlIGBpbml0YFxuaW5pdCA9IDFcblxuIyBEZWZpbmUgYHBsdXMoKWAgZnVuY3Rpb24gdG8gYWNjZXB0IGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xuZGVmIHBsdXMoKmFyZ3MpOlxuICAjIExvY2FsIHZhcmlhYmxlIGBzdW0oKWBcbiAgdG90YWwgPSAwXG4gIGZvciBpIG4gYXJnczoXG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcbiAgXG4jIEFjY2VzcyB0aGUgZ2xvYmFsIHZhcmlhYmxlXG5wcmludChcInRoaXMgaXMgdGhlIGluaXRpYWxpemVkIHZhbHVlIFwiICsgc3RyKGluaXQpKVxuXG4jIChUcnkgdG8pIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVcbnByaW50KFwidGhpcyBpcyB0aGUgc3VtIFwiICsgc3RyKHRvdGFsKSkifQ==

Je zult zien dat je een NameError krijgt waarin staat dat de name 'total' is not defined wanneer je probeert de lokale variabele total te printen die binnen het functielichaam is gedefinieerd. De variabele init daarentegen kan zonder problemen worden geprint.

Alleen-positionele en alleen-keyword-parameters

Sinds Python 3.8 kun je meer controle nemen over hoe argumenten moeten worden doorgegeven met twee speciale markeringen in je functiedeclaratie: / en *. Alles vóór de / mag alleen positioneel worden doorgegeven; alles na de * mag alleen via keywords worden doorgegeven.

def greet(name, /, greeting="Hello", *, punctuation="!"):
    print(f"{greeting} {name}{punctuation}")

 Zo pakt dat uit op de aanroepplaats:

greet("Alice")                          # werkt
greet("Alice", greeting="Hi")           # werkt
greet("Alice", "Hi", punctuation="?")   # werkt

greet(name="Alice")                     # TypeError: name is positional-only
greet("Alice", "Hi", "?")               # TypeError: punctuation is keyword-only

Waarom zou je dit willen? Twee hoofdredenen.

Ten eerste laten alleen-positionele parameters je ze later hernoemen zonder iemands code te breken — omdat niemand de parameternaam als keyword mag gebruiken, ben je vrij om die te wijzigen.

Ten tweede dwingen alleen-keyword-parameters aanroepers om expliciet te zijn over wat ze doorgeven, wat aanroepen leesbaarder maakt wanneer je meerdere optionele vlaggen of instellingen hebt.

Kortom, het is een nette manier om intentie af te dwingen.

Anonieme functies in Python

Anonieme functies worden in Python ook lambda-functies genoemd, omdat je in plaats van ze te declareren met het standaardtrefwoord def, het trefwoord lambda gebruikt.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRvdWJsZSA9IGxhbWJkYSB4OiB4KjJcblxuZG91YmxlKDUpIn0=

In het bovenstaande DataCamp Light-blok is lambda x: x*2 de anonieme of lambda-functie. x is het argument en x*2 is de expressie of instructie die wordt geëvalueerd en geretourneerd. Het bijzondere aan deze functie is dat ze geen naam heeft, in tegenstelling tot de voorbeelden die je in het eerste deel van deze functietutorial hebt gezien. Als je de bovenstaande functie als UDF zou schrijven, krijg je het volgende:

def double(x):
  return x*2

Laten we nog een voorbeeld van een lambda-functie bekijken waarin je met twee argumenten werkt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgYHN1bSgpYCBsYW1iZGEgZnVuY3Rpb25cbnN1bSA9IGxhbWJkYSB4LCB5OiB4ICsgeTtcblxuIyBDYWxsIHRoZSBgc3VtKClgIGFub255bW91cyBmdW5jdGlvblxuc3VtKDQsNSlcblxuIyBcIlRyYW5zbGF0ZVwiIHRvIGEgVURGXG5kZWYgc3VtKHgsIHkpOlxuICByZXR1cm4geCt5In0=

Je gebruikt anonieme functies wanneer je een naamloze functie nodig hebt voor een korte periode, die tijdens runtime wordt aangemaakt. Specifieke contexten waarin dit relevant is, zijn wanneer je werkt met filter(), map() en reduce():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2VcblxubXlfbGlzdCA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF1cblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYGZpbHRlcigpYFxuZmlsdGVyZWRfbGlzdCA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiAoeCoyID4gMTApLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYG1hcCgpYFxubWFwcGVkX2xpc3QgPSBsaXN0KG1hcChsYW1iZGEgeDogeCoyLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYHJlZHVjZSgpYFxucmVkdWNlZF9saXN0ID0gcmVkdWNlKGxhbWJkYSB4LCB5OiB4K3ksIG15X2xpc3QpXG5cbnByaW50KGZpbHRlcmVkX2xpc3QpXG5wcmludChtYXBwZWRfbGlzdClcbnByaW50KHJlZHVjZWRfbGlzdCkifQ==

De functie filter() filtert, zoals de naam al suggereert, de oorspronkelijke invoerlijst my_list op basis van een criterium >10. Met map() pas je daarentegen een functie toe op alle items van de lijst my_list. In dit geval vermenigvuldig je alle elementen met 2.

Let op dat de functie reduce() deel uitmaakt van de bibliotheek functools. Je past deze functie cumulatief toe op de items van de lijst my_list, van links naar rechts, en reduceert de reeks tot één waarde, in dit geval 55.

main() gebruiken als functie in Python

Als je ervaring hebt met andere programmeertalen zoals Java, weet je dat de functie main nodig is om functies uit te voeren. Zoals je in de bovenstaande voorbeelden hebt gezien, is dat voor Python niet per se nodig. Toch kan het opnemen van een main()-functie in je Python-programma handig zijn om je code logisch te structureren: alle belangrijkste onderdelen staan dan in deze main()-functie.

Je kunt eenvoudig een main()-functie definiëren en aanroepen, net zoals je met alle andere functies hierboven hebt gedaan:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG5cbm1haW4oKSJ9

Zoals het er nu uitziet, wordt de code van je main()-functie echter aangeroepen wanneer je deze als module importeert. Om ervoor te zorgen dat dit niet gebeurt, roep je de functie main() aan wanneer __name__ == '__main__'.

Dat betekent dat de code uit het bovenstaande codeblok wordt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG4gIFxuIyBFeGVjdXRlIGBtYWluKClgIGZ1bmN0aW9uIFxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkifQ==

Let op dat je naast de functie __main__ ook een functie __init__ hebt die een instantie van een klasse of een object initialiseert. Simpel gezegd werkt die als een constructor of initializer en wordt automatisch aangeroepen wanneer je een nieuwe instantie van een klasse maakt. Met die functie wordt het nieuw aangemaakte object toegewezen aan de parameter self, die je eerder in deze tutorial hebt gezien. Bekijk het volgende voorbeeld:

class Dog:
    """A simple Dog class.

    Args:
        legs: Number of legs so that the dog can walk.
        color: The color of the fur.
    """

    def __init__(self, legs: int, color: str) -> None:
        self.legs = legs
        self.color = color

    def bark(self) -> str:
        return "bark" * 2

if __name__ == "__main__":
    dog = Dog(4, "brown")
    print(dog.bark())

Blijf oefenen met Python-functies

Gefeliciteerd! Je hebt deze korte tutorial over functies in Python doorlopen. Wil je andere basisstof van Python programmeren herhalen, mis dan niet de cursus Data Types for Data Science, waarin je je kennis van lijsten, woordenboeken, tuples, sets en datums en tijden consolideert en oefent.

Veelgestelde vragen over Python-functies

Wat is een functie in Python?

Een functie is een herbruikbaar codeblok dat een specifieke taak uitvoert. Het kan input aannemen, die verwerken en output retourneren.

Hoe definieer je een functie in Python?

Om een functie in Python te definiëren, gebruik je het trefwoord def, geef je je functie een naam, voeg je optionele parameters toe tussen haakjes, schrijf je je code en return je optioneel een waarde.

Wat is het verschil tussen functies en methoden in Python?

Functies staan op zichzelf, maar methoden horen bij klassen. Alle methoden zijn functies, maar niet alle functies zijn methoden.

Wat zijn de typen functies in Python?

Python heeft ingebouwde functies (zoals print()), door de gebruiker gedefinieerde functies (je eigen creaties) en anonieme functies (kortdurende lambda-functies).

Wat is het verschil tussen parameters en argumenten?

Parameters zijn placeholders in je functiedefinitie, en argumenten zijn de daadwerkelijke waarden die je doorgeeft bij het aanroepen van de functie.

Wat is een lambda-functie?

Een lambda-functie is een naamloze, eenregelige functie voor snelle taken.

Waarom de __main__-functie gebruiken?

De functie __main__ houdt je code georganiseerd en zorgt dat specifieke delen alleen draaien wanneer het script direct wordt uitgevoerd, niet wanneer het wordt geïmporteerd.

Wat is het verschil tussen globale en lokale variabelen?

Globale variabelen werken overal, terwijl lokale variabelen alleen bestaan binnen hun functie.

Onderwerpen

Leer meer over Python

Cursus

Introductie tot Python

4 Hr
6.8M
Leer de basis van data-analyse met Python in 4 uur. Deze online cursus laat je kennismaken met de Python-interface en populaire pakketten.
Bekijk detailsRight Arrow
Begin met de cursus
Meer zienRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer zienMeer zien