[Python-de] **kwarg

Dinu Gherman gherman at darwin.in-berlin.de
Thu Apr 12 20:29:31 EDT 2001


cruciatuz wrote:
> 
> Hello python-de,
> 
>   2 fragen:
> 
>   1. in python quelltexten sieht man oft 2-fach
>   unterstrichene namen. beispiel MyModule.__doc__ ,
>   was für einen effekt erziehlt man mit solchen
>   unterstrichen?

Hallo "cruciatuz"!

Hmm, am besten in einem Python-Buch nachlesen... Aber nur
ganz kurz: diese Methoden/Variablen haben in Python eine
"spezielle" Bedeutung, was nichts anderes heisst, als dass
sie vom Interpreter selbst gesetzt/gelesen/verwendet wer-
den - ja nach Name und Kontext. Man kann aber solche Vari-
ablen auch selbst setzen oder solche Methoden selbst im-
plementieren; speziell bei Methoden muss man das manchmal! 

>   2. ich habe (vornehmlich in gui-code) öfter
>      dieses konstrukt gesehen:
> 
>      def doSomething(self, *args):
>          # code ...
> 
>      und sowas wie:
> 
>      def doSomethingOther(self, **kwarg):
>          # code ...
> 
>      was bedeutet dieses Argument mit dem "*" oder
>      dem "**" wie *args und **kwarg ?
> 
>    vielen Dank im Vorraus :)

*args steht fuer eine Liste mit einer variable Anzahl von 
"restlichen" Argumenten, die beim Aufruf uebergeben werden. 
**kwarg analog fuer ein Dictionary, z.B.:

def printArgs(spam, *args):
    for a in args:
        print a

def printKwArgs(spam, **kwargs):
    for k, v in kwargs.items():
        print k, v

def printAllArgs(spam, *args, **kwargs):
    for a in args:
        print a
    for k, v in kwargs.items():
        print k, v

printArgs(None, 1, 2, 3)
printKwArgs(None, a=1, b=2, c=3)
printAllArgs(None, 1, 2, 3, a=1, b=2, c=3)


Einfach mal ausprobieren! (Habe es nicht getestet!)

Und ein Buch kaufen! ;-)

Gruss,

Dinu

-- 
Dinu C. Gherman
ReportLab Consultant - http://www.reportlab.com
................................................................
"The only possible values [for quality] are 'excellent' and 'in-
sanely excellent', depending on whether lives are at stake or 
not. Otherwise you don't enjoy your work, you don't work well, 
and the project goes down the drain." 
                    (Kent Beck, "Extreme Programming Explained")



More information about the Python-de mailing list