Seite 1 von 1

variable argumentenanzahl einer funktion übergeben

Verfasst: Sonntag 27. August 2006, 18:29
von thonix
Hallo zusammen,

ich bin mal wieder auf ein Problem gestoßen und leider hat mir weder google noch die Suchfunktion helfen können. Vielleicht kann es jemand von euch ;-)

Folgendes Problem:

Ich habe eine Funtion die eine beliebige Anzahl an Argumenten nimmt.
Nun will ich anhand einer for Schleife aus einer liste die Argumente generieren.

Gibt es hierzu eine Lösung ?

Ich hoffe ich konnte mein Problem Einigermaßen beschreiben.

Thonix

Verfasst: Sonntag 27. August 2006, 18:43
von mitsuhiko
Funktioniert wunderbar, wenn man *irgendwas für eine Variable Argumentliste verwendet:

Code: Alles auswählen

>>> def my_function(*args):
...     return list(args)
...
>>> my_function("spam", "eggs", 42)
['spam', 'eggs', 42]

Verfasst: Sonntag 27. August 2006, 19:49
von Michael Schneider
Hi thonix,

ich vermute mal, Du willst einer Funktion die Werte einer Sequenz unbekannter Länge übergeben, oder? :)

Dafür gibt es die builtin-Funktion apply:

Code: Alles auswählen

>>> def ausgabe(*words):
	    for word in words:
		    print word

>>> liste = ["hello", "world"]
>>> apply(ausgabe, liste)
hello
world
>>> 
Grüße,
der Michel

[EDIT]Wenn es schon liste heißt, sollte es auch kein Tupel sein[/EDIT]

Verfasst: Sonntag 27. August 2006, 20:03
von mitsuhiko
Michael Schneider hat geschrieben:Dafür gibt es die builtin-Funktion apply
Nein. Dafür gibts eine eigene Syntax:

Code: Alles auswählen

ausgabe(*liste)

Verfasst: Sonntag 27. August 2006, 20:12
von Michael Schneider
Hi blackbird,

ui, wieder was gelernt. Darum stand also in der Doku bei apply: "sollte nicht mehr verwendet werden"? Aber seit wann gibt es diese Syntax?

Trotzdem funktioniert apply ganz gut. :)

Grüße,
Michael

Verfasst: Sonntag 27. August 2006, 22:45
von thonix
Gigantisch - vielen vielen Dank für eure Antworten.

Verfasst: Montag 28. August 2006, 07:41
von mitsuhiko
Michael Schneider hat geschrieben:Aber seit wann gibt es diese Syntax?
Die älteste Python version die ich hier habe ist 2.1 und da gibt es die schon. Also schon eine ganze Weile :)