Инструкция assert Python
Что такое утверждение (assertion)?
Утверждения (assertions) — это инструкции, которые уверенно констатируют или утверждают факт в вашей программе. Например, при написании функции деления, вы уверены, что делитель не должен быть равен нулю, и вы утверждаете, что делитель не равен нулю.
Утверждения — это просто логические выражения, которые проверяют, возвращают ли условия true или нет. Если это так, программа ничего не делает и переходит к следующей строке кода. Однако, если это false, программа останавливается и выдаёт ошибку.
Это также инструмент отладки, поскольку он останавливает программу, как только возникает ошибка, и отображает её.
Мы можем убедиться в этом, посмотрев на блок-схему ниже:
Инструкция assert Python
В Python есть встроенная инструкция assert для использования условия утверждения в программе. Инструкция assert имеет условие или выражение, которое должно всегда быть истинным. Если условие ложно, assert останавливает программу и выдаёт AssertionError.
Синтаксис использования assert в Python:
assert <condition>
assert <condition>,<error message>
В Python можно использовать инструкцию assert двумя способами, как указано выше.
Инструкция
assertимеет условие, и если условие не удовлетворяется, программа остановится и выдастAssertionError.Инструкция
assertтакже может иметь условие и необязательное сообщение об ошибке. Если условие не удовлетворяется,assertостанавливает программу и выдаётAssertionErrorвместе с сообщением об ошибке.
Рассмотрим пример, где у нас есть функция, которая вычисляет среднее значение чисел, переданных пользователем, и значение не должно быть пустым списком. Мы будем использовать инструкцию assert для проверки параметра, и если длина переданного списка равна нулю, программа останавливается.
Пример 1: использование assert без сообщения об ошибке
def avg(marks):
assert len(marks) != 0
return sum(marks)/len(marks)
mark1 = []
print("Average of mark1:",avg(mark1))
При запуске вышеуказанной программы вывод будет:
AssertionError
Мы получили ошибку, поскольку передали пустой список mark1 в инструкцию assert, условие стало ложным, и assert остановил программу и выдал AssertionError.
Теперь давайте передадим другой список, который удовлетворит условие assert, и посмотрим, каким будет наш вывод.
Пример 2: использование assert с сообщением об ошибке
def avg(marks):
assert len(marks) != 0,"List is empty."
return sum(marks)/len(marks)
mark2 = [55,88,78,90,79]
print("Average of mark2:",avg(mark2))
mark1 = []
print("Average of mark1:",avg(mark1))
При запуске вышеуказанной программы вывод будет:
Average of mark2: 78.0
AssertionError: List is empty.
Мы передали непустой список mark2 и также пустой список mark1 в функцию avg(), и мы получили вывод для списка mark2, но после этого мы получили ошибку AssertionError: List is empty. Условие assert было удовлетворено списком mark2, и программа продолжила выполнение. Однако mark1 не удовлетворяет условию и выдаёт AssertionError.
Ключевые моменты для запоминания
Утверждения — это условие или логическое выражение, которое всегда должно быть истинным в коде.
Инструкция
assertпринимает выражение и необязательное сообщение.Инструкция
assertиспользуется для проверки типов, значений аргументов и вывода функции.Инструкция
assertиспользуется как инструмент отладки, так как она останавливает программу в точке, где возникает ошибка.