Uzyskaj domyślną wartość argumentu funkcji?
Dla tej funkcji
def eat_dog(name, should_digest=True):
print "ate dog named %s. Digested, too? %" % (name, str(should_digest))
Chcę, na zewnątrz funkcji, przeczytać jej argumenty i wszelkie wartości domyślne dołączone. Więc dla tego konkretnego przykładu chcę to wiedziećname
nie ma wartości domyślnej (tj. jest to wymagany argument) i toTrue
jest wartością domyślną dlashould_digest
.
jestem swiadomyinspect.getargspec()
, co daje mi informacje o argumentach i wartościach domyślnych, ale nie widzę żadnego połączenia między tymi dwoma:
ArgSpec(args=['name', 'should_digest'], varargs=None, keywords=None, defaults=(True,))
Z tego wyjścia mogę to powiedziećTrue
(wdefaults
krotka) jest wartością domyślną dlashould_digest
?
Dodatkowo zdaję sobie sprawę z modelu zbliżania się do problemu „poproś o przebaczenie”, ale niestety wyjście z tego błędu nie powie mi nazwy brakującego argumentu:
>>> eat_dog()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: eat_dog() takes at least 1 argument (0 given)
Aby podać kontekst (dlaczego chcę to zrobić), udostępniam funkcje w module nad interfejsem API JSON. Jeśli wywołujący pomija pewne argumenty funkcji, chcę zwrócić konkretny błąd, który nazwał konkretny argument funkcji, który został pominięty. Jeśli klient pomija argument, ale w podpisie funkcji jest domyślnie, chcę użyć tego domyślnego.