Seite 1 von 1

Bedeutung von * in Python

Verfasst: Mittwoch 21. Januar 2004, 16:04
von Christopy
Hallo zusammen
Welche Bedeutung hat eigentlich genau der Stern (*) in Verbindung mit Variablen? Ist das eine Art Pointer-Eigenschaft?

Gruss
Christoph

Verfasst: Mittwoch 21. Januar 2004, 16:39
von Milan
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...

Verfasst: Mittwoch 21. Januar 2004, 16:50
von Christopy
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...

Verfasst: Mittwoch 21. Januar 2004, 17:12
von Dookie
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

Verfasst: Mittwoch 21. Januar 2004, 17:35
von Christopy
Danke! Nun weiss ich Bescheid :D