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.