[Python-de] Funktionsparameter

"Martin v. Löwis" martin at v.loewis.de
Son Nov 21 18:20:19 CET 2004


Mike Senner wrote:
>>>>add(l[:])
> 
> Traceback (most recent call last):
> TypeError: add() takes exactly 3 arguments (1 given)

Der direkte Weg wäre

add(l[0], l[1], l[2])

Das sollte völlig klar sein, und erklärt auch dem Leser,
was hier passiert. Jemand hat (richtigerweise) add(*l)
vorgeschlagen. Obwohl das funktioniert, möchte ich in
diesem Fall davon abraten - das *-Zeichen scheint Dich
zu sehr zu verwirren, als das Du es nutzbringend verwenden
kannst.

> Eine Möglichkeit wäre das Folgende, aber die andere
> Variante hilft bei der Lesbarkeit und der Wartung.
> 
> def add(*arg):
>     user, passwd, mest = arg
>     dosomthing()

Hast Du diese Möglichkeit mal ausprobiert? Sie
funktioniert tatsächlich nicht (oder zumindest nicht
besser als das, was Du jetzt schon hast).

Ciao,
Martin