Funktionen: Default und Schlüsselwort-Argumente
Listing "Default Argument"
In vielen Fällen ist es nützlich, ein default-Argument vorzugeben. Das kommt dann zur Anwendung, wenn kein Argument gegeben ist:
def gruessen_mit_namen(name="unbekanntes Wesen"):
print("Hallo " + name + "!")
gruessen_mit_namen()
#=> Hallo Maria!
gruessen_mit_namen()
#=> Hallo unbekanntes Wesen!
Listing "Schlüsselwort Argument"
Bei Funktionen, die mehr als zwei oder drei Argumente erwarten, kann es schwierig werden, sich die richitige Reihenfolge zu merken. Hier helfen sogenannte Schlüsselwort-Argumente, die sich auf die Argumentnamen in der Funktionsdefinition beziehen.
def satz_fabrik(name, hobby, leibgericht):
print("Ich heiße " + name + ", mein Hobby ist " + hobby + ", und ich esse gern " + leibgericht + ".")
satz_fabrik("Pit", "Lesen", "Kartoffeln mit Quark")
#=> Ich heiße Pit, mein Hobby ist Lesen, und ich esse gern Kartoffeln mit Quark.
satz_fabrik(hobby="Lesen", name="Pit", leibgericht="Kartoffeln mit Quark")
#=> Ich heiße Pit, mein Hobby ist Lesen, und ich esse gern Kartoffeln mit Quark.
Listing "Default- und Schlüsselargument"
Besonders nützlich ist die Kombination aus Schlüsselwort- und Default-Argumenten. Das gilt besonders, wenn eine Funktion viele Argumente verarbeiten kann. In solchen Fällen können Default-Argumente verwendet werden, um Standardwerte zu setzen, während mit Schlüsselwort-Argumenten gezielt nur die relevanten Werte überschrieben werden können, ohne die Reihenfolge zu beachten. Diese Flexibilität erleichtert das Schreiben von Code, der sowohl lesbar als auch erweiterbar ist.
def satz_fabrik(name="Unbekannt", hobby="Nichtstun", leibgericht="Nichts"):
print("Ich heiße " + name + ", mein Hobby ist " + hobby + ", und ich esse gern " + leibgericht + ".")
satz_fabrik()
#=> Ich heiße Unbekannt, mein Hobby ist Nichtstun, und ich esse gern Nichts.
satz_fabrik(leibgericht="Pizza")
#=> Ich heiße Unbekannt, mein Hobby ist Nichtstun, und ich esse gern Pizza.
satz_fabrik(hobby="Stricken")
#=> Ich heiße Unbekannt, mein Hobby ist Stricken, und ich esse gern Nichts.
satz_fabrik("Michaela", leibgericht="Chop Suey")
#=> Ich heiße Michaela, mein Hobby ist Nichtstun, und ich esse gern Chop Suey.