Standardwert eines Funktionsarguments abrufen?

Für diese Funktion

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

Ich möchte, außerhalb der Funktion, deren Argumente und etwaige angehängte Standardwerte lesen. Also für dieses spezielle Beispiel möchte ich das wissenname hat keinen Standardwert (d. h., dass es ein erforderliches Argument ist) und dassTrue ist der Standardwert fürshould_digest.

Ich bin mir bewusst überinspect.getargspec(), die mir Informationen über Argumente und Standardwerte geben, aber ich sehe keine Verbindung zwischen den beiden:

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

Wie kann ich das an dieser Ausgabe erkennen?True (in demdefaults Tupel) ist der Standardwert fürshould_digest?

Außerdem ist mir das Modell "Bitte um Verzeihung" bekannt, mit dem ich mich einem Problem nähern kann. Die Ausgabe dieses Fehlers verrät mir jedoch nicht den Namen des fehlenden Arguments:

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

Um den Kontext anzugeben (warum ich dies tun möchte), lege ich Funktionen in einem Modul über eine JSON-API offen. Wenn der Aufrufer bestimmte Funktionsargumente auslässt, möchte ich einen bestimmten Fehler zurückgeben, der das bestimmte Funktionsargument benennt, das ausgelassen wurde. Wenn ein Client ein Argument auslässt, die Funktionssignatur jedoch einen Standardwert enthält, möchte ich diesen Standardwert verwenden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage