【问题标题】:How to return false instead of Assertion Error?如何返回 false 而不是断言错误?
【发布时间】:2019-04-25 21:30:45
【问题描述】:

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

但是当我测试它时会抛出一个断言错误(正确地安静),我想知道有没有办法接受错误并返回 false 呢?

现在我使用 if not 语句在断言无效时返回 false,但是因为我有很多断言,所以我的代码有点长。

【问题讨论】:

  • 如果你不希望它引发错误,为什么你使用断言?
  • 所以在返回true之前所有条件都满足了。
  • 写一个assert-like function 来做你想做的事。
  • 也许你应该阅读一下你正在使用的东西,并重新考虑一下:docs.python.org/3/reference/…

标签: python function error-handling assertion


【解决方案1】:

你可以通过 try: except 块捕获异常

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

但是我没有意义将断言用于布尔条件仅将其封装在 try except 块中以返回真或假。您可以使用简单的 and 语句获得相同的行为:

result = condition1 and condition2 # ....

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

def high_level_condition():
    return condition1 and condition2

断言似乎不是此类任务的正确语言功能。 我只会使用 assert 来检查不变量以检查程序是否按预期运行。

【讨论】:

    【解决方案2】:

    您不想在这里使用断言,只需使用条件语句。

    if not (whatever your assert was):
        return false
    

    【讨论】:

    • 我修好了,我的错
    猜你喜欢
    • 1970-01-01
    • 2016-04-05
    • 2021-11-19
    • 2021-06-04
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多