Python *args, **keywords
Verfasst: Mittwoch 18. Februar 2009, 11:06
Hallo zusammen
Ich habe mich schon länger gefragt, was es mit den *args und **kw an sich hat, die man so in manchen Beispielen sieht.
Ich hab eine frage dazu, zuerst aber das Beispiel aus der Python Doku:
So, also die Funktion cheeseshop hat ein benötigtes Argument "kind", dann eine anzahl n argumente und eine anzahl n an keywords.
soweit sogut. Ich habe bisher immer funktionen gemacht, bei denen ich nur jeweils ein argument brauchte. Jetzt aber komme ich in die situation, dass ich einer funktion mehrere mögliche optionen mitgeben möchte.
es geht konkret um eine funktion, die einen benutzer in eine datenbank hinzufügt:
als beispiel für ein optionales keyword nehme ich "active", welcher sagt ob der benutzer sich einloggen kann oder nicht. wenn ich in der funktion addUser() aber versuche, auf kw['active'] zuzugreifen, kriege ich natürlich eine fehlermeldung, wenn diese nicht übergeben wurde.
gibt es dazu eine saubere lösung, dies zu machen? oder ist das beispiel in der python doku so "empfohlen"?
Ich habe mich schon länger gefragt, was es mit den *args und **kw an sich hat, die man so in manchen Beispielen sieht.
Ich hab eine frage dazu, zuerst aber das Beispiel aus der Python Doku:
Code: Alles auswählen
def cheeseshop(kind, *arguments, **keywords):
print "-- Do you have any", kind, '?'
print "-- I'm sorry, we're all out of", kind
for arg in arguments: print arg
print '-'*40
for kw in keywords.keys(): print kw, ':', keywords[kw]
soweit sogut. Ich habe bisher immer funktionen gemacht, bei denen ich nur jeweils ein argument brauchte. Jetzt aber komme ich in die situation, dass ich einer funktion mehrere mögliche optionen mitgeben möchte.
es geht konkret um eine funktion, die einen benutzer in eine datenbank hinzufügt:
Code: Alles auswählen
def addUser(username, password, **kw):
...
gibt es dazu eine saubere lösung, dies zu machen? oder ist das beispiel in der python doku so "empfohlen"?