Bedeutung von * in Python

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
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Hallo zusammen
Welche Bedeutung hat eigentlich genau der Stern (*) in Verbindung mit Variablen? Ist das eine Art Pointer-Eigenschaft?

Gruss
Christoph
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Ist mir nicht ganz klar, was du meinst... meinst du bei Funktionsdefinitionen?

Code: Alles auswählen

>>> def f(*x):
     print x
>>> f(1)
(1,)
>>> f(1,2)
(1, 2)
>>> f(1,2,3)
(1, 2, 3)
merkst du was? Du darfst dann x beliebig viele Werte übergeben, die alle in ein Tupel zusammengefasst werden...
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Ah. Danke.
Ich hab mich schon immer über solche Konstrukte gewundert, wie sie z.B. wxGlade produziert. Hab mir aber nie viel Gedanken darüber gemacht, sondern es erstmal hingenommen.

Code: Alles auswählen

class MyFrame(wxFrame):
    def __init__(self, *args, **kwds):
Der Stern ist mir nun klar. Was bewirkt der Doppelstern genau?
BTW ich hab sowas bis jetzt immer durch die Übergabe einer Liste umgangen...
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Christopy,

Code: Alles auswählen

def f(**kw):
    print kw
    for key, value in kw.items():
        print "%s = %s" % (str(key), str(value)) 

f(erster="Hallo", zweiter="_", nocheiner="Welt")
Also bei ** kannst Du beliebig viele Parameter mit Namen übergeben. Diese werden in ein Dictionary umgewandelt mit den Namen als Keys.

Gruß

Dookie
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Danke! Nun weiss ich Bescheid :D
Antworten