如何返回false而不是断言错误?

时间:2019-04-25 21:30:45

标签: python function error-handling assertion

我有一个布尔函数,我在python中使用assert命令。这意味着,如果所有的断言都是正确的,则该函数将返回True,但是当不满足断言时,我将得到一个错误。我希望它只返回false。

但是,当我测试它时会抛出一个断言错误(非常正确),我想知道是否有办法接受该错误并返回false?

现在,如果断言无效,我正在使用if not语句返回false,但是由于我有很多断言,我的代码变得有点长。

2 个答案:

答案 0 :(得分:1)

您不想在这里使用assert,只需使用条件语句即可。

if not (whatever your assert was):
    return false

答案 1 :(得分:0)

您可以尝试使用异常:块除外

try:
    assert condition1 # or whatever you want to check
    assert condition2 # ...
except AssertionError:
    return True
else:
    return False

但是,我不打算为布尔条件使用断言只是将其封装在try除外块中以返回true或false。您可以通过简单的and语句获得相同的行为:

result = condition1 and condition2 # ....

或者将所有条件包装在高级函数中以提高代码的可读性:

def high_level_condition():
    return condition1 and condition2

对于这种任务,声明似乎不是正确的语言功能。 我只会使用assert来检查不变量以检查程序的行为是否符合预期。