Python

  • Code von http://aspn.activestate.com/AS…book/Python/Recipe/502261

    Kann mir jemand sagen was die * bzw. ** Notation bedeutet?


    Code
    ...
    def pkgconfig(*packages, **kw):
    ...
            Extension("extension", ['extension_main.c'], **pkgconfig('glib-2.0')),
  • In Python hast du die Möglichkeit eine Funktion zu definieren ohne zu wissen wieviele Parameter es gibt. Das heisst die Anzahl der Parameter kann sich zur Laufzeit ändern.


    * bedeutet du kriegst alle übergebenen Parameter als Tupel Liste
    ** bedeutet du kriegst alle übergebenen Parameter als Dictionary


    Du könntest dann auch noch sowas schreiben:


    Code
    def foo( bar1, bar2, *bar3 ):
    ...

    Das würde dann bedeuten gib mir die ersten zwei Parameter als bar1 und bar2 und alle weiteren in bar3 als Tupel Liste.

  • Code
    Extension("extension", ['extension_main.c'], **pkgconfig('glib-2.0')),

    Soweit ich das richtig sehe wird hier Extension instanziert und es gibt den einen StringParameter einen Listen Paramter und danach (pkgconfig) gibts es wieder ein Dictionary mit den restlichen Paramtern. Was das glib.. in den Klammern bedeutet kann ich dir leider auch net sagen.

  • Zitat
    Code
    Extension("extension", ['extension_main.c'], **pkgconfig('glib-2.0'))



    * und ** machen bei einem Funktionsaufruf im Prinzip genau das
    Gegenteil von dem, was sie in einer Funktionsdefinition tuen:



    " pkgconfig('glib-2.0') " erstellt also ein dictionary, welches als
    Schlüssel die Namen der Argumente, und als values deren Werte enthält.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!