Рубрики
Без рубрики

Оператор Python Assert

Автор оригинала: Jacob Stopak.

Оператор Python Assert

В этой статье мы рассмотрим, как использовать оператор assert в Python.

В Python оператор assert используется для проверки истинности условия с помощью синтаксиса:

assert 

Если условие имеет значение True , программа продолжает выполняться так, как будто ничего необычного не произошло. Однако если условие оценивается как False , программа завершается с AssertionError .

>>> assert True

При выполнении приведенного выше кода ничего не происходит, так как условие вычисляется как Правда . В качестве альтернативы условие в приведенном ниже примере имеет значение False :

>>> assert False
Traceback (most recent call last):
  File "", line 1, in 
AssertionError

Для большей ясности мы можем добавить пользовательское сообщение об ошибке в вывод утверждения следующим образом:

>>> assert False, "This is a custom assertion message!"
Traceback (most recent call last):
  File "", line 1, in 
AssertionError: This is a custom assertion message!

Оператор assert полезен, когда мы хотим проверить, что переменная в нашем коде принимает правильное значение, и завершить программу, если это не так. Это помогает предотвратить бесшумные режимы сбоя, которые могут возникнуть, если программа продолжает выполняться с ошибочными значениями и может быть трудно отлаживаться.

Вот пример утверждения assert с более значимым условием. Предположим, что мы хотим убедиться, что переменная флага, введенная пользователем, была установлена в одно из нескольких правильных значений. Если нет, то мы прекратим выполнение программы. Мы можем сделать это следующим образом:

>>> flag = input("Enter a flag (y/n): ")
Enter a flag (y/n): y
>>> assert flag == "y" or flag == "n", "Invalid flag, must be 'y' or 'n'"

В приведенном выше примере пользователь ввел допустимое значение для флага, поэтому никаких ошибок не возникает. Однако в приведенном ниже примере утверждение генерируется из-за недопустимого пользовательского ввода:

>>> flag = input("Enter a flag (y/n): ")
Enter a flag (y/n): b
>>> assert flag == "y" or flag == "n", "Invalid flag, must be 'y' or 'n'"
Traceback (most recent call last):
  File "", line 1, in 
AssertionError: Invalid flag, must be 'y' or 'n'

При использовании таким образом ваш код должен поймать брошенную ошибку и показать пользовательское сообщение об ошибке в качестве вывода пользователю, чтобы он мог исправить свой ответ. Это имеет огромное количество применений в программах Python, будь то утверждение входных данных для маршрута API или проверка того, что загруженный ресурс содержит правильную информацию.

Еще один важный момент, который следует отметить, заключается в том, что при запуске интерпретатора Python или скрипта Python из командной строки флаг –O может использоваться для запуска программы без принудительного выполнения каких-либо утверждений. Это позволит игнорировать операторы assert, отключив режим отладки интерпретатора Python. Будьте осторожны с этим, так как это может привести к тому, что ваш код примет недопустимые или опасные входные данные.

Об авторе

Эта статья была написана Джейкобом Стопаком, консультантом по программному обеспечению и разработчиком, страстно желавшим помочь другим улучшить свою жизнь с помощью кода. Джейкоб – создатель Code Card – удобного инструмента для разработчиков, позволяющего искать, копировать и вставлять распространенные фрагменты кода.