Tupel, Dictionaries und Argumentübergabe
Python bietet die Möglichkeit die Parameterübergabe an Methoden mit Elemente variabler Länge durchzuführen. Dazu werden Tupel und Dictionaries genutzt.
Tupel
def method(arg, *argt): print "Fester Parameter:", arg for arg in argt: print "Parameter:", arg method("Parameter 1", 2, "Parameter 3")
Python packt bei diesem Aufruf alle Parameter die nicht direkt zugeordnet werden können in ein Tupel und übergibt dieses. Das Tupel argt kann als Objekt auch weiterverwand werden, z.B. zur Weiterverarbeitung an eine andere Methode.
Die Übergabe eines Tupels klappt übrigens auch in der anderen Richtung.
def method(arg1, arg2, arg3): print "arg1:", arg1 print "arg2:", arg2 print "arg3:", arg3 args = ("two", 3) method(1, *args)
Callback
Ein Beispiel für einen Methodenaufruf mit variabler Länge an Parametern ist eine Callback-Funktion.
def _execute(self, callback, *argv): try: methodToCall = getattr(CallbackHandler, callback) retval = methodToCall(argv) except AttributeError: pass return retval
Mittels der getattr Methode wird aus dem übergebenen String die ausführbare Methode, die sich in der Klasse CallbackHandler befindet. Da wir diese Klasse mit Methoden verschiedenster Art füllen wollen, machen wir uns keine weiteren Gedanken um die später benötigten Parameter sondern übergeben einfach nur ein Tupel.
Zur Fehlerbehebung bietet gettattr() auch als optionalen Parameter einen default Wert. Dieser wird zurückgegeben falls das benannte Attribut nicht existiert.
Dictionaries
Um Ordnung ins Chaos zu bringen kann man mittels Dictionaries benannte Parameter übergeben. Dazu einfach zwei Sterne nutzen.
def method(arg, **argd): print "Parameter 1:", arg for key in argd: print "Schluessel: %s: Wert: %s" % (key, argd[key]) method(1, arg2="two", arg3=3)
Selbstverständlich kann ein Dictionary auch übergeben werden. Hier erfolgt alles analog zum Tupel, jedoch bitte den zweiten Stern nicht vergessen.
Natürlich steht es jedem frei beide Möglichkeiten zu kombinieren.
def method(arg, *argt **argd): pass
About the Author
Computer sollen uns in Beruf und Alltag unterstützen. Damit das funktioniert müssen wir einen einfachen und intuitiven Zugang zu unseren Programmen, Daten und Systemen haben.