Автор оригинала: 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 – удобного инструмента для разработчиков, позволяющего искать, копировать и вставлять распространенные фрагменты кода.