检索指定函数接受的参数的名称(和默认值)
Retrieve the names of (and default values of) the arguments accepted by a specified function
假设我有一个函数,foo
,它有一些参数......一些位置和一些关键字:
def foo(a, b=1.0, c=None):
print a
print c
return 2 * b
有没有我可以用 foo
作为参数调用的另一个函数(或者我可以调用的 foo
的方法),它将 return 给我一个位置列表foo
的参数以及 foo 的关键字参数的元组列表及其默认值?具体来说,调用:
the_function_i_want(foo)
应该return
(('a',), (('b', 1.0), ('c', None)))
或者类似的东西。需要明确的是,我 不 想要一种方法来确定在调用它的特定时间传递给 foo
的值。相反,我想要以编程方式了解有关 foo
的函数签名的信息。
(我想到的用例是自动制作一个 Web 表单,该表单能够提交适当的数据作为指定函数的参数。因此,如果我在以适当的方式,它将能够为 foo
的每个参数呈现一个带有空格的 Web 表单,并以适当的方式预先填充默认调用值。)
我认为你在描述 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)>
假设我有一个函数,foo
,它有一些参数......一些位置和一些关键字:
def foo(a, b=1.0, c=None):
print a
print c
return 2 * b
有没有我可以用 foo
作为参数调用的另一个函数(或者我可以调用的 foo
的方法),它将 return 给我一个位置列表foo
的参数以及 foo 的关键字参数的元组列表及其默认值?具体来说,调用:
the_function_i_want(foo)
应该return
(('a',), (('b', 1.0), ('c', None)))
或者类似的东西。需要明确的是,我 不 想要一种方法来确定在调用它的特定时间传递给 foo
的值。相反,我想要以编程方式了解有关 foo
的函数签名的信息。
(我想到的用例是自动制作一个 Web 表单,该表单能够提交适当的数据作为指定函数的参数。因此,如果我在以适当的方式,它将能够为 foo
的每个参数呈现一个带有空格的 Web 表单,并以适当的方式预先填充默认调用值。)
我认为你在描述 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)>