В этой статье мы рассмотрим, как использовать оператор assert в Python.
В Python оператор assert используется для проверки истинности условия с использованием синтаксиса:
assert <condition>
Если условие оценивается как True, программа продолжает выполнение, как если бы ничего необычного не произошло. Однако, если условие оценивается как False, программа завершается с ошибкой AssertionError.
>>> assert True
При выполнении приведенного выше кода ничего не происходит, так как условие оценивается как True. В качестве альтернативы условие в приведенном ниже примере оценивается как False:
>>> assert False Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError
Для большей ясности мы можем добавить собственное сообщение об ошибке в вывод утверждения следующим образом:
>>> assert False, "This is a custom assertion message!" Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError: This is a custom assertion message!
Оператор assert полезен, когда мы хотим проверить, принимает ли переменная в нашем коде правильное значение, и завершить программу, если это не так. Это помогает предотвратить тихие режимы сбоя, которые могут возникнуть, если программа продолжает выполняться с ошибочными значениями, и их может быть трудно отладить.
Вот пример утверждения утверждения с более значимым условием. Предположим, мы хотим убедиться, что для переменной flag, вводимой пользователем, установлено одно из нескольких правильных значений. В противном случае мы прекратим выполнение программы. Мы можем сделать это следующим образом:
>>> 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, поэтому ошибок не возникает. Однако в приведенном ниже примере утверждение выдано из-за недопустимого ввода пользователем:
>>> 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 "<stdin>", line 1, in <module>
AssertionError: Invalid flag, must be 'y' or 'n'
При таком использовании ваш код должен улавливать возникшую ошибку и отображать настраиваемое сообщение об ошибке в качестве вывода для пользователя, чтобы он мог исправить свой ответ. Это имеет огромное количество применений в программах Python, будь то утверждение входных данных для маршрута API или проверка того, что загруженный ресурс содержит правильную информацию.
Еще один важный момент, на который следует обратить внимание, это то, что когда вы запускаете интерпретатор или скрипт Python из командной строки, можно использовать flag –O для запуска программы без принудительного выполнения каких-либо утверждений. Это проигнорирует утверждения assert, отключив режим отладки интерпретатора Python. Будьте осторожны, используя это, так как это может привести к тому, что ваш код будет принимать недопустимые или опасные входные данные.