列出所有函数参数名称(无文档)

时间:2013-06-30 18:04:43

标签: python introspection

我是Python的相对初学者,我正在尝试使用它来运行一些没有很好记录的代码。我的问题是,如何使用交互式shell获取函数或类构造函数的可能参数列表。理想情况下,我希望有类似dir()的东西,但它应该列出不是类成员,而是列出函数的可能参数名称。

如果不可能,有没有其他方法来推断函数参数而不查看代码?

2 个答案:

答案 0 :(得分:4)

使用help(function_object)使python格式化它所知道的关于给定函数的所有内容。

您还可以使用inspect.getargspec() function获取已接受参数的命名元组概述。您可以将该函数的结果传递给inspect.formatargspec(),以将其格式化为python函数:

>>> 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')

答案 1 :(得分:1)

您想要inspect.getargspec

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