Получить значение аргумента функции по умолчанию?

Для этой функции

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

Ответы на вопрос(4)

Ваш ответ на вопрос