Как вернуть false вместо Assertion Error? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть логическая функция, где я использую команду assert в python.Это означает, что если все утверждения верны, функция возвращает True, однако, когда утверждение не выполнено, я получаю ошибку.Я хочу, чтобы вместо этого он просто возвращал ложь.

Однако, когда я проверяю, это выдает ошибку подтверждения (тихо, верно), мне интересно, есть ли способ принять ошибку и вместо нее вернуть ложь?

Прямо сейчас я использую операторы if not, чтобы возвращать false, если утверждение неверно, но из-за того, что у меня много утверждений, мой код становится немного длиннее.

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Вы не хотите использовать assert здесь, просто используйте условный оператор.

if not (whatever your assert was):
    return false
0 голосов
/ 26 апреля 2019

Вы можете перехватить исключение с помощью try: кроме блока

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

Но у меня нет смысла использовать assert для логического условия только для того, чтобы инкапсулировать его в try, кроме блока, чтобы вернуть trueили ложьВы можете получить то же поведение с помощью простого выражения:

result = condition1 and condition2 # ....

или вы оберните все свои условия в функцию высокого уровня, чтобы повысить читабельность кода:

def high_level_condition():
    return condition1 and condition2

Утверждается, что это не такбыть подходящей языковой функцией для такого рода задач.Я бы использовал assert для проверки инвариантов, чтобы убедиться, что программа ведет себя так, как задумано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...