Пример использования assert в Python?

Я читал о том, когда использовать assert и исключения, но я еще не "получить это". Кажется, всякий раз, когда я думаю, что я в ситуации, когда я должен использовать assert, позже в разработке я нахожу, что я "смотрю, прежде чем прыгать", чтобы убедиться, что assert не терпит неудачу, когда я вызываю функцию. Поскольку есть еще одна идиома Python о предпочтении использовать try-except, я обычно заканчиваю тем, что бросаю assert и бросаю исключение вместо этого. Мне еще предстоит найти место, где это кажется правильным. использовать метод assert. Кто-нибудь может привести несколько хороших примеров?

4 ответов


хорошее руководство использует assert когда его запуск означает ошибка в коде. Когда ваш код предполагает что-то и действует на основании предположения, рекомендуется защитить это предположение с помощью assert. Это assert сбой означает, что ваше предположение неверно, что означает, что ваш код неверен.


Как правило, используют assert для проверки вещей, которые не должно быть. как проверить на вменяемость.

еще одна вещь, чтобы понять, что утверждает удалены при оптимизации:

генератор текущего кода не выдает код для оператора assert при запросе оптимизации во время компиляции.


Generelly, assert есть, чтобы проверить предположение, которое у вас есть о вашем коде, т. е. в этот момент либо assert успешно, либо ваша реализация каким-то образом глючит. Исключение остро ожидает, что произойдет ошибка и "охватит" ее, то есть позволит вам справиться с ней.


хорошим примером является проверка аргументов функции на согласованность:

def f(probability_vector, positive_number):
    assert sum(probability_vector) == 1., "probability vectors have to sum to 1"
    assert positive_number >= 0., "positive_number should be positive"
    # body of function goes here