哪种编码风格更好/正确,为什么?在每个函数中使用 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 中省略断言?或者也许还有另一种解决方案?
编辑#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