h1

Python Funktionsparameter (oder: die Macht des Sternchens)

Juli 24, 2008

Meistens sieht eine Funktion so aus: 1-3 Parameter, dann werden damit ein paar Sachen gemacht, und am Ende gibt sie einen Wert zurück. Manchmal hat man jedoch spezielle Wünsche, und einer kommt da besonders oft vor: Was in PHP nur sehr umständlich geht und in Javascript gar nicht, ist in Python dagegen eine Leichtigkeit: Funktionen mit unbegrenzten Parametern.

Natürlich könnte man seine Funktionen so schreiben:

def addiere(sum1, sum2, sum3, sum4, sum5):

Das gelbe vom Ei ist das aber nicht gerade. Viel eleganter geht es mit dem Asterisk:

def addiere(*params):

print params

Ein Beispiel:

>>> addiere(1,3,6,7)

(1,3,6,7)

Alle Parameter werden in einem Tupel gespeichert. Aber es geht noch weiter, den Spaß kann man super kombinieren:

def familie(nachname, *vornamen)

>>> familie(’schmidt‘, ‚anna‘, ‚heinz‘, ‚klaus‘)

In diesem Fall hat man einen Standard Parameter, und kann danach noch soviele man will angeben. Um dasselbe mit Keyword Parametern zu erreichen muss man zwei Sternchen angeben:

def adressbuch(**params):

print params

>>> adressbuch(name=’Martha‘, nachname=’Müller‘, plz=12756)

{’name‘:’Martha‘, ’nachname‘:’Müller‘, ‚plz‘:12756}

Wie man sieht werden die Parameter in diesem Falle als Dictionary gespeichert. Und zu guter letzt kann man auch alle 3 kombinieren:

def viele_parameter(x,y,z, *weitere_koordinaten, **keyword_paramter)

>>> viele_parameter(1,2,3,4,5,6,’test‘,8,var=’hallo‘,foo=’bar‘)

Für das letzte Beispiel fällt mir zwar auf Anhieb auch kein Verwendungszweck ein, aber trotzdem gut zu wissen, dass es sowas gibt, falls man mal in die Verlegenheit kommen sollte sowas zu brauchen.

Das Ganze geht übrigens auch andersrum:

def addiere(var1, var2)

vars = (3,4)

addiere(*vars)

In diesem Fall wird das Tupel gesplittet und auf die Parameter aufgeteilt. Dasselbe geht auch mit Dictionaries:

def hello(greeting, name)

params = {‚greeting‘: ‚Guten Tag‘, ’name‘:’Hans‘}

hello(**params)

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: