variable argumentenanzahl einer funktion übergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

variable argumentenanzahl einer funktion übergeben

Beitragvon thonix » Sonntag 27. August 2006, 18:29

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
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Sonntag 27. August 2006, 18:43

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]
TUFKAB – the user formerly known as blackbird
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Sonntag 27. August 2006, 19:49

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]
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Sonntag 27. August 2006, 20:03

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)
TUFKAB – the user formerly known as blackbird
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Sonntag 27. August 2006, 20:12

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

Beitragvon thonix » Sonntag 27. August 2006, 22:45

Gigantisch - vielen vielen Dank für eure Antworten.
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Montag 28. August 2006, 07:41

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 :)
TUFKAB – the user formerly known as blackbird

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder