Получить значение аргумента функции по умолчанию?
Для этой функции
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. Если вызывающая сторона пропускает определенные аргументы функции, я хочу вернуть конкретную ошибку, которая называет конкретный аргумент функции, который был пропущен. Если клиент пропускает аргумент, но в сигнатуре функции предусмотрено значение по умолчанию, я хочу использовать это значение по умолчанию.