Welche Möglichkeiten bestehen Funktionen zu erweitern?
Zunächst einmal gilt es zu unterscheiden, welche Parametertypen für eine Funktion grundsätzlich möglich sind. Diese kann man der folgenden Tabelle entnehmen.
Theorie
Typ | Erläuterung |
---|---|
Pflichtparameter | Diese Parameter müssen bei Aufruf der Funktion vorgegeben werden. |
Standardparameter | Diese Parameter können bei Aufruf der Funktion vorgegeben werden. Falls dies nicht der Fall ist, wird der vordefinierte Fall des Parameters angenommen. |
Parameter mit unterschiedlicher Länge (*args) |
Von diesen Parametern (arguments) können beliebig viele an die Funktion übergeben werden. |
Schlüsselparameter (**kwargs ) |
Mit diesen Parametern (keyword-arguments) können Optionen der Funktion gesteuert werden. |
Damit die verschiedenen Parametertypen deutlich werden, folgen nun zu jedem Typ ein Beispiel.
Pflichtparameter
Bereits im Post [einfache Funktionen] haben wir eine Funktion mit Pflichtparametern geschrieben, diese war wie folgt definiert:
def addieren(add1, add2):
"In dieser Funktion addieren wir zwei Parameter."
ergebnis = add1 + add2
return ergebnis
Die Parameter add1 und add2 müssen auf jeden Fall beim Aufrufen der Funktion vorgeben werden.
Standardparameter
def addieren_pflicht(add1, add2=5):
"In dieser Funktion addieren wir zwei Parameter."
ergebnis = add1 + add2
return ergebnis
Werden Standardparameter wie in diesem Fall für den Parameter add2
vorgegeben, so kann die Funktion auch nur mit einem Parameter aufgerufen werden.
addieren_pflicht(add1=2)
Das Ergebnis wäre in diesem Fall dann 7.
Funktionsparameter mit unterschiedlicher Länge *args
Allgemein baut sich eine Funktion *args
folgendermaßen auf:
def Funktionsname(*args) :
for i in args :
return i
Eine Funktion, die beliebig viele Werte addiert, könnte mithilfe von *args
sehr einfach gebaut werden.
def addieren_args(*args):
ergebnis = sum(args)
return ergebnis
Das Ergebnis der Funktion addieren_args(5, 50, 45)
ist dann 100
.
Schlüsselparameter (**kwargs
)
Mit **kwargs
ist Euch möglich, verschiedene Optionen einer Funktion auszuwählen bzw. zu aktivieren. In dem Fall von Rechnen ist dies z.B. Addieren und Subtrahieren. Eine Funktion, die dies beides kann ist, definiert sich wie folgt:
def addieren_kwargs(add1, add2, **kwargs):
if kwargs.get("Rechenmethode") == 'Addieren':
ergebnis = add1 + add2
if kwargs.get("Rechenmethode") == 'Subtrahieren':
ergebnis = add1 - add2
return ergebnis
Dementsprechend liefert addieren_kwargs(add1=5, add2=3, Rechenmethode='Addieren')
als Ergebnis 8
und addieren_kwargs(add1=5, add2=3, Rechenmethode='Subtrahieren')
als Ergebnis 2
.
Natürlich lassen sich die verschiedenen Parameterarten beliebig miteinander kombinieren und setzen der Kreativität keine Grenzen.