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.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

argumente einer funktion ermitteln

Beitragvon Costi » Sonntag 14. Oktober 2007, 18:10

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:

Beitragvon veers » Sonntag 14. Oktober 2007, 18:26

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". ;)
My Website - 29a.ch
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

Beitragvon BlackJack » Sonntag 14. Oktober 2007, 19:30

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: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Sonntag 14. Oktober 2007, 21:14

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

Beitragvon Joghurt » Montag 15. Oktober 2007, 00:27

Ist "func_code" nicht CPython-spezifisch?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 15. Oktober 2007, 17:09

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 Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder