8on*_*ne6 2 python reflection function
假设我有一个函数,foo它有一些参数......一些位置和一些关键字:
def foo(a, b=1.0, c=None):
print a
print c
return 2 * b
Run Code Online (Sandbox Code Playgroud)
是否有另一个我可以foo作为参数调用的函数(或者foo我可以调用的方法)将返回给我一个位置参数的foo列表以及foo的关键字参数的元组列表及其默认值值?具体来说,致电:
the_function_i_want(foo)
Run Code Online (Sandbox Code Playgroud)
应该回来
(('a',), (('b', 1.0), ('c', None)))
Run Code Online (Sandbox Code Playgroud)
或类似的东西.需要明确的是我不是想办法弄清楚哪些值传递给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))
Run Code Online (Sandbox Code Playgroud)
您也可以signature在3.x中使用:
>>> from inspect import signature
>>> signature(foo)
<Signature (a, b=1.0, c=None)>
Run Code Online (Sandbox Code Playgroud)