Я видел в некоторых программах и в Интернете, что они используют функцию assert , например:
Assert True
Ничего не делает, пока:
Assert False
Отправить AssertationError...
Мне до сих пор непонятно, для чего эта функция.
Любые идеи ?
Благодарю вас!
Что он делает, уже объяснено в других ответах. Я собираюсь немного больше рассказать о том, для чего он используется. Он имеет два основных применения.
Обнаружение ошибок программирования
Первый — включить в свою программу своего рода «подстраховку» от возможных ошибок программиста. Представьте, что вы вызываете функцию, которая, как вы знаете, никогда не возвращает отрицательное значение, и используете ее ответ как часть другой операции:
Я настаиваю,
otra_funcion()
никогда не будет возвращать негатив. Если бы это было так, это было бы неправильно. Но вы не доверяете ей полностью, потому что, возможно, эта функция была написана не вами и, возможно, в более позднем обновлении библиотеки, включающей ее, появляется ошибка и возвращается отрицательный результат.assert
позволяет выразить условие, которое всегда должно быть истинным, иначе программа будет прервана. Мы могли бы добавитьassert
так:Хотя это
a
действительно положительно, мы как будто не добавилиassert
, так как он ничего не делает. Но если бы он когда-либо был отрицательным, мы были бы спокойны, потому что этоassert
прервет программу и выведет трассировку, указывающую точку в программе, где произошелassert
сбой.Мы можем включить сообщение, которое будет частью исключения, которое возникает, когда выражение ложно. Так:
Это сообщение будет частью ошибки, если возникнет исключение, и поможет нам отследить проблему.
Важной деталью является то, что
assert
следует использовать для обнаружения условий, которые никогда не должны возникать , а если они возникают, их следует рассматривать как ошибку программирования. Если, с другой стороны, возможно, что функция возвращает отрицательные значения, но в моем конкретном приложении это не работает для меня, и я хочу считать это ошибкой, нормальным было бы использовать aif
для проверки этого и, при необходимости , создайте более подходящее исключение. Например:тестирование
Когда вы пишете модульные тесты (которые состоят из вызова функции, результат которой вы уже заранее знаете, каким он должен быть, но вы проверяете, действительно ли он возвращает то, что вы ожидали),
assert
используется для проверки того, что значение является ожидаемым. .Например, предположим, что вы написали вызываемую функцию
raiz_cuadrada()
и хотите проверить, нормально ли она работает. Вы можете написать несколько тестов следующим образом:Обычно было бы больше тестов, но для понимания этого достаточно.
Когда вы запускаете эти тесты из среды автоматизации тестирования, эта среда фиксирует те
AssertionError
, которые происходят, так что, в конце концов, она может предоставить вам отчет о том, сколько тестов не удалось (и какие), чтобы вы могли просмотреть функцию, которая не удалась. вести себя не так, как вы ожидалиТестирование очень важно во время разработки, потому что, если вы модифицируете функцию
raiz_cuadrada()
, чтобы исправить имеющуюся в ней ошибку, вы хотите быть уверены, что этим вы не внесли другую ошибку. Очень важно иметь хороший набор тестов и чтобы все они продолжали проходить после изменения кода.Утверждение — это оператор Python, который позволяет вам определять условия, которые всегда должны выполняться. В случае, если логическое выражение равно True, assert ничего не делает, а в случае False генерирует исключение.
Их можно использовать как предварительные и постусловия в методах, функциях, блоках кода, но прежде всего для указания инвариантов. Это короче, чем написание оператора if, гораздо понятнее для читателя, и в качестве бонуса оператор не выполняется, если интерпретатор вызывается с -O.
Итак, когда делать:
Создайте исключение AssertionError , которое вы могли бы поймать в попытке/за исключением
Вы можете ввести официальные документы: Doc Oficial