[Python-de] Unpacking Argument Lists

"Martin v. Löwis" martin at v.loewis.de
Die Nov 16 21:41:40 CET 2004


Alexander 'boesi' Bösecke wrote:
>>>>'%s %s %s' %(1, *tupel)
[...]
> Kurz: Warum funktioniert das eine und warum ist das andere ein
> SyntaxError? Ich kann keinen wesentlichen Unterschied erkennen.

Das erste funktioniert, weil es eine variable Argumentliste
ist, und man diese mit *args füllen kann. Das zweite (zitierte)
funktioniert nicht, weil % *keine* Funktion ist, sondern
ein binärer Operator (so wie + in 3+4, oder wie % in 10%3).
Der binäre Operator hat in diesem Fall zwei Argumente, nämlich
einen String und ein Tupel (alternativ auch ein Dictionary).
(1, *tupel) ist kein Tupel. Nur durch Tupel-Verkettung bekommt
man ein neues - so, wie Du es auch selbst vorgeschlagen hast.

Ciao,
Martin