Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
Python Functie-argumenten onder de knie krijgen
Ontdek hoe je functies ontwerpt die variabele aantallen argumenten accepteren in Python – met defaults, keywords en willekeurige parameters voor schonere, meer aanpasbare code.
Video: Python Functie-argumenten: Positionele, Keywords en Default
Argumenten
In het user-defined function onderwerp hebben we functies definiëren en aanroepen behandeld. Een call die de verwachte signature mismatched, genereert een fout. Bijvoorbeeld:
def greet(name, msg):
"""Deze functie groet de persoon met het meegegeven bericht."""
print("Hallo", name + ", " + msg)
greet("Monica", "Goedemorgen!")
Output
Hallo Monica, Goedemorgen!
De greet() functie accepteert twee parameters. Het aanroepen met het correcte aantal argumenten draait soepel; anders emiteert de interpreter een TypeError met een duidelijke boodschap.
>>> greet("Monica") # slechts één argument
TypeError: greet() missing 1 required positional argument: 'msg'
>>> greet() # geen argumenten TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'
Variabele Functie-argumenten
Python biedt flexibele manieren om een variabel aantal argumenten te accepteren. Drie gangbare patronen worden hieronder behandeld.
Python Default Argumenten
Parameters kunnen standaardwaarden krijgen met de toewijzingsoperator (=). Het volgende voorbeeld demonstreert hoe een optioneel bericht default naar "Goedemorgen!":
def greet(name, msg="Goedemorgen!"):
"""Deze functie groet de persoon met het meegegeven bericht.
Als het bericht niet meegegeven wordt, default het naar "Goedemorgen!"."""
print("Hallo", name + ", " + msg)
greet("Kate")
greet("Bruce", "Hoe gaat het?")
Output
Hallo Kate, Goedemorgen! Hallo Bruce, Hoe gaat het?
In deze definitie is name verplicht, terwijl msg optioneel is. Wanneer een default-argument aanwezig is, moeten alle daaropvolgende parameters ook defaults hebben; anders ontstaat een SyntaxError.
def greet(msg = "Goedemorgen!", name): pass
SyntaxError: non-default argument follows default argument
Python Keyword Argumenten
Python laat aanroepers argumenten op naam specificeren, wat positionele volgorde-flexibiliteit mogelijk maakt. Dezelfde greet() functie kan als volgt aangeroepen worden:
# 2 keyword arguments
greet(name = "Bruce", msg = "Hoe gaat het?")
# 2 keyword arguments (out of order)
greet(msg = "Hoe gaat het?", name = "Bruce")
# 1 positioneel, 1 keyword argument
greet("Bruce", msg = "Hoe gaat het?")
Het mixen van positionele en keyword-argumenten is toegestaan mits alle positionele argumenten voorafgaan aan keyword-argumenten; anders resulteert een SyntaxError.
greet(name="Bruce","Hoe gaat het?")
SyntaxError: non-keyword arg after keyword arg
Python Willekeurige Argumenten
Wanneer het aantal argumenten op ontwerptijd onbekend is, gebruik een asterisk (*) om ze als tuple te vangen:
def greet(*names):
"""Groet elke naam in de meegegeven tuple."""
for name in names:
print("Hallo", name)
greet("Monica", "Luke", "Steve", "John")
Output
Hallo Monica Hallo Luke Hallo Steve Hallo John
Binnen de functie is names een tuple met alle doorgegeven argumenten, die vervolgens geïtereerd of verwerkt kan worden zoals nodig.
Python
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Pass Statement onder de knie krijgen: Een praktische gids
- Python Lambda Functies: Een praktische gids voor anonieme functies
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-generators: efficiënte iteratie en geavanceerde use cases
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python-decorators beheersen: functies verbeteren met expert-technieken
- Python's strip()-methode beheersen: Uitgebreide handleiding & praktische voorbeelden
- Python lambda-functies beheersen: praktische voorbeelden & best practices
- Python abs()-functie: absolute waarden berekenen voor getallen & complexe getallen