1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Python

    • Frage
  • Raiden
  • 1. Juni 2007 um 19:04
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Raiden
    Punkte
    268
    Beiträge
    46
    • 1. Juni 2007 um 19:04
    • #1

    Code von http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/502261

    Python
    #!/usr/bin/env python
    from distutils.core import setup
    from distutils.extension import Extension
    import commands
    
    
    def pkgconfig(*packages, **kw):
        flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'}
        for token in commands.getoutput("pkg-config --libs --cflags %s" % ' '.join(packages)).split():
            kw.setdefault(flag_map.get(token[:2]), []).append(token[2:])
        return kw
    
    
    setup(
        name = "myPackage",
        ext_modules=[
            Extension('extension', ['extension_main.c'], **pkgconfig('glib-2.0')),
        ],
    )
    Alles anzeigen

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

    Code
    ...
    def pkgconfig(*packages, **kw):
    ...
            Extension("extension", ['extension_main.c'], **pkgconfig('glib-2.0')),
  • max_rayman
    Punkte
    887
    Beiträge
    169
    • 1. Juni 2007 um 19:48
    • #2

    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.

  • Raiden
    Punkte
    268
    Beiträge
    46
    • 1. Juni 2007 um 19:54
    • #3

    ah, danke verstehe

    und die andere Zeile heisst Ergebnis von pkgconfig ist ein Dict?

    Code
    Extension("extension", ['extension_main.c'], **pkgconfig('glib-2.0')),
  • max_rayman
    Punkte
    887
    Beiträge
    169
    • 1. Juni 2007 um 20:56
    • #4
    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.

  • Raiden
    Punkte
    268
    Beiträge
    46
    • 1. Juni 2007 um 21:19
    • #5

    damit ists mir dann klar.
    danke nochmals

  • a9bejo
    Punkte
    4.697
    Beiträge
    913
    • 1. Juni 2007 um 23:07
    • #6
    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:

    Code
    ben@kafka:~$ python
    Python 2.5.1 (r251:54863, May  2 2007, 16:56:35) 
    [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> def foo(a,b):
    ...   print("a=%s, b=%s"%(a,b))
    ... 
    >>> foo(*[1,2])
    a=1, b=2
    >>> foo(**{'a':2,'b':1})
    a=2, b=1
    >>>
    Alles anzeigen

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

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum