Pour cette fonction
def eat_dog(name, should_digest=True):
print "mangé chien nommé %s. Digéré aussi ? %" % (name, str(should_digest))
Je veux, en dehors de la fonction, lire ses arguments et toutes les valeurs par défaut attachées. Donc, pour cet exemple spécifique, je veux savoir que name
n'a pas de valeur par défaut (c'est-à-dire que c'est un argument requis) et que True
est la valeur par défaut pour should_digest
.
Je suis conscient de inspect.getargspec()
, qui me donne des informations sur les arguments et les valeurs par défaut, mais je ne vois pas de lien entre les deux:
ArgSpec(args=['name', 'should_digest'], varargs=None, keywords=None, defaults=(True,))
A partir de cette sortie, comment puis-je savoir que True
(dans le tuple defaults
) est la valeur par défaut pour should_digest
?
De plus, je suis conscient du modèle de "demander le pardon" pour aborder un problème, mais malheureusement la sortie de cette erreur ne me dira pas le nom de l'argument manquant:
>>> eat_dog()
Traceback (most recent call last):
File "", line 1, in
TypeError: eat_dog() prend au moins 1 argument (0 donné)
Pour donner du contexte (pourquoi je veux faire cela), j'expose des fonctions dans un module via une API JSON. Si l'appelant omet certains arguments de fonction, je veux renvoyer une erreur spécifique qui nomme l'argument de fonction spécifique qui a été omis. Si un client omet un argument, mais qu'il y a une valeur par défaut fournie dans la signature de la fonction, je veux utiliser cette valeur par défaut.