Obtém o valor padrão de um argumento de função?

Para esta função

def eat_dog(name, should_digest=True):
    print "ate dog named %s. Digested, too? %" % (name, str(should_digest))

Eu quero, externo à função, ler seus argumentos e quaisquer valores padrão anexados. Então, para este exemplo específico, quero saber quename não tem valor padrão (ou seja, que é um argumento obrigatório) e queTrue é o valor padrão parashould_digest.

Estou ciente deinspect.getargspec(), que me fornece informações sobre argumentos e valores padrão, mas não vejo nenhuma conexão entre os dois:

ArgSpec(args=['name', 'should_digest'], varargs=None, keywords=None, defaults=(True,))

A partir desta saída, como posso dizer queTrue (nodefaults tupla) é o valor padrão parashould_digest?

Além disso, estou ciente do modelo de "pedir perdão" para abordar um problema, mas infelizmente a saída desse erro não me diz o nome do argumento ausente:

>>> eat_dog()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: eat_dog() takes at least 1 argument (0 given)

Para dar contexto (porque eu quero fazer isso), estou expondo funções em um módulo sobre uma API JSON. Se o chamador omite determinados argumentos da função, desejo retornar um erro específico que nomeie o argumento da função específica que foi omitido. Se um cliente omite um argumento, mas há um padrão fornecido na assinatura da função, quero usar esse padrão.

questionAnswers(4)

yourAnswerToTheQuestion