どのコーディング スタイルが優れているか、正しいか、またその理由は? 各関数で assert ステートメントを使用する:
def fun_bottom(arg):
assert isinstance(arg, int)
#blah blah
def fun_middle(arg):
assert isinstance(arg, int)
fun_bottom(arg)
#blah blah
def fun_top(arg):
assert isinstance(arg, int)
fun_middle(arg)
#blah blah
それとも、fun_bottom 関数で arg の型がチェックされることがわかっているので、fun_middle と fun_top のアサーションを省略しますか? それとも別の解決策がありますか?
EDIT #1
ああ、誤解されていました。例として assert isinstance(arg, int) を使用しました。質問を書き直します:
どちらを使用するか:
オプション 1: 各関数で引数が関数の要件を満たしているかどうかを確認します。
def fun_bottom(arg):
assert arg > 0
#blah blah
def fun_middle(arg):
assert arg > 0
fun_bottom(arg)
#blah blah
def fun_top(arg):
assert arg > 0
fun_middle(arg)
#blah blah
オプション 2: 一番下の関数で引数がチェックされることがわかっているため、中間関数と最上位関数ではアサーションを行いません。
def fun_bottom(arg):
assert arg > 0
#blah blah
def fun_middle(arg):
fun_bottom(arg)
#blah blah
def fun_top(arg):
fun_middle(arg)
#blah blah