2013-06-30 4 views
0

Я являюсь относительно новичком в Python, и я пытаюсь использовать его для запуска некорректного документа. Мой вопрос в том, как я могу получить список возможных аргументов функции или конструктора классов, используя интерактивную оболочку, например. В идеале я хотел бы иметь что-то вроде dir(), но он должен перечислять не члены класса, а возможные имена аргументов функции.Список всех имен аргументов функции (нет документа)

Если это невозможно, есть ли другой способ вывести аргументы функции, не заглядывая в код?

+0

Если вы находитесь в среде * nix, используйте bpython – thefourtheye

+0

Имейте в виду - в Python функции могут принимать [переменные аргументы] (http: // stackov erflow.com/questions/919680/python-can-a-variable-number-of-arguments-be-passed-to-a-функция), поэтому это может быть не так полезно. –

+0

@thefourtheye [IPython] (http://www.Ipython.org), вероятно, лучше. –

ответ

1

Вы хотите inspect.getargspec:

>>> import inspect 
>>> def foo(bar, baz): 
...  pass 
... 
>>> inspect.getargspec(foo) 
ArgSpec(args=['bar', 'baz'], varargs=None, keywords=None, defaults=None) 
+0

Спасибо! Вот что я искал – coffee

4

Используйте help(function_object), чтобы иметь формат python, все, что он знает о данной функции для вас.

Вы также можете использовать inspect.getargspec() function, чтобы получить список названных кортежей принятых аргументов. Вы можете передать результат этой функции inspect.formatargspec() форматировать, что в качестве функции питона, а также:

>>> from inspect import getargspec, formatargspec 
>>> def demo(foo, bar, eggs='ham'): pass 
... 
>>> getargspec(demo) 
ArgSpec(args=['foo', 'bar', 'eggs'], varargs=None, keywords=None, defaults=('ham',)) 
>>> formatargspec(*getargspec(demo)) 
"(foo, bar, eggs='ham')" 

Для приведенного выше примера функции, help(demo) печатает:

Help on function demo in module __main__: 

demo(foo, bar, eggs='ham') 
Смежные вопросы