assert
Используется для проверки истинности указанного утверждения.
Инструкция
Если проверка не прошла, возбуждается исключение AssertionError.
Рекомендуется использовать инструкцию только для проверки внутреннего состояния программы — ситуаций, которые не должны происходить вовсе, которые нельзя обработать или это не имеет смысла (обычно это является указанием на то, что код программы содержит ошибку). Инструкция также может использоваться для документирования ожиданий (например, входных параметров или результата). В остальных случаях следует определять свои типы исключений.
assert
позволяет производить проверки истинности утверждений, что может быть использовано в отладочных целях.Если проверка не прошла, возбуждается исключение AssertionError.
Рекомендуется использовать инструкцию только для проверки внутреннего состояния программы — ситуаций, которые не должны происходить вовсе, которые нельзя обработать или это не имеет смысла (обычно это является указанием на то, что код программы содержит ошибку). Инструкция также может использоваться для документирования ожиданий (например, входных параметров или результата). В остальных случаях следует определять свои типы исключений.
passed = False
assert passed, 'Not passed' # Поднимается исключение.
# assert passed # Можно и не указывать текст описания, но рекомендуется.
# Запись выше эквивалентна следующей конструкции:
if __debug__:
if not passed:
raise AssertionError('Not passed')
# Пример правильного переноса строки описания:
assert a, ('Long exception '
'description chunked.')
# А теперь пример неправильного (передача кортежа),
# при котором проверка всегда проходит без ошибок:
assert (a, 'Long exception '
'description chunked.')
На заметку
В текущей реализации __debug__ — встроенная константа, по умолчанию имеющая значение
True
. Если интерпретатор запущен в режиме оптимизации (с флагом командной строки -O
), значение константы становится False
, а генератор кода перестаёт производить байткод для рассматриваемой инструкции. Таким образом, отключив проверки, но не убирая их из кода, можно снизить неизбежные для них накладные расходы.
Синонимы поиска: assert
В разделе «Simple Statements (простые инструкции, операторы)»:
del
pass
raise
with
Арифметические операторы
На заметку
Зарегистрированные пользователи могут публиковать свои Статьи.