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