我是Python的相对初学者,我正在尝试使用它来运行一些没有很好记录的代码。我的问题是,如何使用交互式shell获取函数或类构造函数的可能参数列表。理想情况下,我希望有类似dir()的东西,但它应该列出不是类成员,而是列出函数的可能参数名称。
如果不可能,有没有其他方法来推断函数参数而不查看代码?
答案 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)