这个功能
def eat_dog(name, should_digest=True):
print "ate dog named %s. Digested, too? %" % (name, str(should_digest))
我想在函数外部读取它的参数和任何附加的默认值。因此,对于这个特定的示例,我希望知道 name没有默认值(即它是一个必需的参数) ,而 True是 should_digest的默认值。
我知道 inspect.getargspec(),它确实给了我关于参数和默认值的信息,但是我看不出两者之间有什么联系:
ArgSpec(args=['name', 'should_digest'], varargs=None, keywords=None, defaults=(True,))
从这个输出中,我如何知道 True(在 defaults元组中)是 should_digest的默认值?
此外,我知道“请求宽恕”模型是用来解决问题的,但不幸的是,这个错误的输出不会告诉我缺少的论点的名称:
>>> eat_dog()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: eat_dog() takes at least 1 argument (0 given)
为了给出上下文(我为什么要这样做) ,我将通过 JSON API 公开模块中的函数。如果调用方省略了某些函数参数,我希望返回一个特定的错误,该错误命名被省略的特定函数参数。如果客户机省略了一个参数,但在函数签名中提供了一个默认值,我希望使用该默认值。