Seite 1 von 1

argumente einer funktion ermitteln

Verfasst: Sonntag 14. Oktober 2007, 18:10
von Costi
gibt es eine saubere (kein brute force und am besten auch kein hack) methode um rauszukriegen was fuer argumente eine funktion erwartet?


danke

Verfasst: Sonntag 14. Oktober 2007, 18:26
von veers
Da Python dynamisch typisiert ist wird das sehr schwierig. Was du herausfinden kannst sind die Namen und die Anzahl der Argumente:

Code: Alles auswählen

func.func_code.co_varnames[:func.func_code.co_argcount]
Das gibt dir eine Liste mit den Namen der Argumente zurück. Ich kann nicht sagen wie "korrekt" er ist, da ich das ganze mehr oder weniger durch introspection mit ipython herausgefunden haben. Ich verwende den Code um halbautomatisch Commandline interfaces zu "erzeugen". ;)

Verfasst: Sonntag 14. Oktober 2007, 19:30
von BlackJack
Und es gibt natürlich auch das `inspect`-Modul:

Code: Alles auswählen

In [222]: def f(a, b=42, *args, **kwargs):
   .....:     pass
   .....:

In [223]: inspect.getargspec(f)
Out[223]: (['a', 'b'], 'args', 'kwargs', (42,))

Verfasst: Sonntag 14. Oktober 2007, 21:14
von Costi
genau danach habe ich gesucht!

Verfasst: Montag 15. Oktober 2007, 00:27
von Joghurt
Ist "func_code" nicht CPython-spezifisch?

Verfasst: Montag 15. Oktober 2007, 17:09
von Leonidas
Joghurt hat geschrieben:Ist "func_code" nicht CPython-spezifisch?
Aus dem Bauch heraus würde ich das mit "Ja" beantworten, weil es doch eher die Interna des Interpreters sind.