この機能について
def eat_dog(name, should_digest=True):
print "ate dog named %s. Digested, too? %" % (name, str(should_digest))
関数の外部で、その引数と添付されているデフォルト値を読み取りたい。name
したがって、この特定の例では、 にはデフォルト値がなく (つまり、必須の引数であること)、それTrue
が のデフォルト値であることを知りたいですshould_digest
。
はinspect.getargspec()
、引数とデフォルト値に関する情報を提供してくれますが、この 2 つの間に関連性は見られません。
ArgSpec(args=['name', 'should_digest'], varargs=None, keywords=None, defaults=(True,))
True
この出力から、 (defaults
タプルで) が のデフォルト値であることをどのように判断できますshould_digest
か?
さらに、問題にアプローチする「許しを求める」モデルを認識していますが、残念ながら、そのエラーからの出力では、欠落している引数の名前がわかりません。
>>> eat_dog()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: eat_dog() takes at least 1 argument (0 given)
コンテキスト (なぜこれを行う必要があるのか) を示すために、JSON API を介してモジュール内の関数を公開しています。呼び出し元が特定の関数引数を省略した場合、省略された特定の関数引数を示す特定のエラーを返す必要があります。クライアントが引数を省略しても、関数シグネチャにデフォルトが提供されている場合は、そのデフォルトを使用したいと考えています。