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:
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