argumente einer funktion ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

gibt es eine saubere (kein brute force und am besten auch kein hack) methode um rauszukriegen was fuer argumente eine funktion erwartet?


danke
cp != mv
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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". ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
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,))
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

genau danach habe ich gesucht!
cp != mv
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Ist "func_code" nicht CPython-spezifisch?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten