assert представляет собой средство отладки, которое проверяет условие. Если условие утверждения assert истинно, то ничего не происходит и ваша программа продолжает выполняться как обычно. Но если же вычисление условия дает результат ложно, то вызывается исключение AssertionError с необязательным сообщением об ошибке
Агеев Максимhas quoted2 years ago
def apply_discount(product, discount):
price = int(product['цена'] * (1.0 — discount))
assert 0 <= price <= product['цена']
return price
Агеев Максимhas quoted2 years ago
Это значительно ускорит отладку и в дальнейшем сделает ваши программы удобнее в поддержке.
Агеев Максимhas quoted2 years ago
Дело в том, что инструкция assert предназначена для того, чтобы сообщать разработчикам о неустранимых ошибках в программе. Инструкция assert не предназначена для того, чтобы сигнализировать об ожидаемых ошибочных условиях
Агеев Максимhas quoted2 years ago
Инструкции призваны быть внутренними самопроверками (internal self-checks) вашей программы. Они работают путем объявления неких условий, возникновение которых в вашем исходном коде невозможно.
Агеев Максимhas quoted2 years ago
Если ваша программа бездефектна, то эти условия никогда не возникнут. Но если же они возникают, то программа завершится аварийно с исключением AssertionError, говорящим, какое именно «невозможное» условие было вызвано.
Агеев Максимhas quoted2 years ago
Цель использования инструкции assert состоит в том, чтобы позволить разработчикам как можно скорее найти вероятную первопричину ошибки. Если в вашей программе ошибки нет, то исключение AssertionError никогда не должно возникнуть.