对于这个函数
def eat_dog(name, should_digest=True):
print "ate dog named %s. Digested, too? %" % (name, str(should_digest))
我想要在函数外部读取其参数和附加的默认值。对于这个特定的例子,我想知道name
没有默认值(即它是一个必需的参数),而should_digest
的默认值为True
。
我知道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公开模块中的函数。 如果调用方省略某些函数参数,我希望返回一个指定错误,其中命名省略的特定函数参数。 如果客户端省略了一个参数,但是在函数签名中提供了默认值,则我希望使用该默认值。
zip
函数吗?有哪部分不理解吗?如果你能告诉我哪里让你困惑,我很乐意改进答案。 - mgilson