检索指定函数接受的参数的名称(和默认值)



假设我有一个函数,foo,它有一些参数…一些位置和关键字:

def foo(a, b=1.0, c=None):
    print a
    print c
    return 2 * b

是否有另一个函数我可以调用foo作为参数(或我可以调用的foo方法),它将返回给我foo的位置参数列表以及foo的关键字参数的元组列表及其默认值?具体来说,要求:

the_function_i_want(foo)

应该返回

(('a',), (('b', 1.0), ('c', None)))

或者类似的东西。要明确的是,我做不是想要一种方法来找出什么值传递给foo一个特定的时间,它被调用。相反,我想以可编程的方式获得有关foo函数签名的信息。

(我想到的用例是自动使一个web表单,将能够提交适当的数据作为指定函数的参数。因此,如果我以适当的方式调用web_form(foo),它将能够呈现一个web表单,为foo的每个参数提供空格,并以适当的方式预先填充默认调用值。

我想你是在描述inspect.getargspec:

>>> from inspect import getargspec
>>> getargspec(foo)
ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=(1.0, None))

您也可以在3.x:

中使用signature
>>> from inspect import signature
>>> signature(foo)
<Signature (a, b=1.0, c=None)>

相关内容

  • 没有找到相关文章

最新更新