Инструкция assert Python

Что такое утверждение (assertion)?

Утверждения (assertions) — это инструкции, которые уверенно констатируют или утверждают факт в вашей программе. Например, при написании функции деления, вы уверены, что делитель не должен быть равен нулю, и вы утверждаете, что делитель не равен нулю.

Утверждения — это просто логические выражения, которые проверяют, возвращают ли условия true или нет. Если это так, программа ничего не делает и переходит к следующей строке кода. Однако, если это false, программа останавливается и выдаёт ошибку.

Это также инструмент отладки, поскольку он останавливает программу, как только возникает ошибка, и отображает её.

Мы можем убедиться в этом, посмотрев на блок-схему ниже:

Блок-схема assert Python

Инструкция assert Python

В Python есть встроенная инструкция assert для использования условия утверждения в программе. Инструкция assert имеет условие или выражение, которое должно всегда быть истинным. Если условие ложно, assert останавливает программу и выдаёт AssertionError.

Синтаксис использования assert в Python:

assert <condition>
assert <condition>,<error message>

В Python можно использовать инструкцию assert двумя способами, как указано выше.

  1. Инструкция assert имеет условие, и если условие не удовлетворяется, программа остановится и выдаст AssertionError.

  2. Инструкция 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 используется как инструмент отладки, так как она останавливает программу в точке, где возникает ошибка.