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.
Antworten
thonix
User
Beiträge: 47
Registriert: Samstag 12. August 2006, 00:06

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

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:

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

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:

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

Sonntag 27. August 2006, 22:45

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

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
Antworten