Python AssertionError

Python Assertionerror



Когато програма на Python срещне неочаквано състояние по време на изпълнение, програмата спира изпълнението и връща изключение. В Python изключенията и синтактичните грешки са двете основни категории грешки. Когато част от Python код, който е синтактично валиден, създава грешка, това е известно като повдигане на изключение/грешка. Съобщението за грешка в последния ред дефинира точния тип на изключението и предоставя описание за помощ при отстраняване на грешки, а стрелка сочи към реда или местоположението, където е възникнало изключението. Улавянето и управлението на изключения е от решаващо значение за избягване на внезапен срив на програмата. Използвайте различен начин за изпълнение на кода. Например, когато възникне посоченото изключение. Този урок ще обсъди AssertionError и как можете да я разрешите в Python.

Какво е AssertionError в Python?

Грешките в твърденията са концепция за програмиране, която възниква, когато програмист напише или създаде блок от код, използван за деклариране на критерий или условие, които трябва да бъдат изпълнени, преди модулът да бъде изпълнен. Като всяка грешка на Python, контролът се прехвърля към следващия ред от код, ако условието, посочено, когато твърдението е обявено за вярно. Ако е невярно, от друга страна, възниква грешка или изключение и програмата се спира. Операторът assert може да се използва в различни езици за програмиране с техния специфичен синтаксис, тъй като е независим от езика. Това е подклас или екземпляр на класа Exception. Python AssertionError има следния синтаксис:

Синтаксис: assert условие, error_message(по избор)







Пример

Ще въведем възрастта на човек като вход и ако тя е по-малка от нула, конзолата ще изведе грешка при твърдение.





Ами ако въведем възраст под 0?





Отстраняването на грешки в кода ви чрез този метод е по-лесно, като по този начин улеснява намирането на грешки и коригирането на грешки в програмата.



Как работи AssertionError в Python

Езикът Python включва оператор assert, който може да се използва за генериране на прости изходни съобщения за грешка с логически твърдения. Когато изявлението за твърдение е неуспешно, се повдига „изключение“ AssertionError. В Python класовете на изключения са извлечени от класа BaseException. Класът BaseException, който също е основният клас на класа AssertionError, е мястото, от което произлиза класът Exception. Винаги трябва да има подходящ код за обработка на изключения, който да се справя с неуспеха на оператор assert, когато се използва такъв. Манипулаторът на изключение по подразбиране в Python ще отпечата съобщението за грешка, написано от програмиста, но грешката може също да бъде обработена или разрешена без съобщение за грешка.

Внедряване на AssertionError в Python

Следват няколко примера за AssertionError в Python:

Пример

В този пример ще напишем програма на Python за показване на AssertionError в програма, която намира площта на кръг.

Стойността на радиуса „r“ се предава като вход към функция в предишната програма, която е създадена за намиране на площта на кръга. След това изразът assert се използва, за да се определи дали предоставената стойност или радиусът „r“ е под нула и ако към него бъде предоставена отрицателна стойност, ще бъде предизвикано изключение. Площта на кръга ще бъде върната въз основа на стойността на радиуса „r“, предоставена на функцията. Първо, функцията се изпълнява със стойност r като 3. След това функцията се изпълнява със стойност 2,5. AssertionError се поражда, когато използваме отрицателна стойност на „r“, т.е. „-1“.

Нека опитаме друг пример, за да покажем появата на грешка в твърдението.

Пример

В този пример програмата ще определи дали стойността на знаменателя е различна от нула.

Съобщението за грешка на твърдението за грешка се показва в предишната програма. Създадохме две променливи (a и b), а целочислените стойности определят променливите. След това втората променлива, т.е. b се тества, за да се види дали не е равна на 0, като се използва операторът assert. Ако е посочено друго, съобщението за грешка се отпечатва. Ако не, се показва резултатът от разделянето на първото число на втората стойност. В предишното изображение се показва изходът на програмата.

Приложения на AssertionError

Другите полезни употреби на грешка при твърдение включват:

  • Утвърждението помага при оценяването на стойностите на параметрите
  • Утвържденията помагат при наблюдението на типа вход и дали тази стойност е валидна
  • Освен това, твърденията помагат при идентифицирането дали друг разработчик на код злоупотребява с интерфейс
  • Утвържденията подпомагат непрекъснатото наблюдение на изхода на програмата

Как можем да избегнем грешките на Assert в Python

  1. Флагът -O в програма на Python може да се използва за деактивиране на всеки оператор за твърдение. Важно е да имате предвид, че операторите, които идват след оператор за твърдение, няма да бъдат изпълнени, ако деактивираме операторите за твърдение.
  2. Променливата на средата може също да зададе флаг за изключване на твърденията за твърдения. Всички процеси и приложения, които използват или наследяват средата, са засегнати в тази ситуация.
  3. В Python най-простият подход за предотвратяване на грешки при твърдения е да ги обработвате ръчно. Ако гарантираме, че контролният поток на програмата е отклонен, така че да няма достъп до твърденията за твърдения, тогава няма шанс за грешки при твърденията.

Обработка на AssertionError

Освен изявлението за твърдение, можем също да се справим с грешката за твърдение, като използваме следните методи:

Обработване на грешката в твърдението с помощта на блоковете Try-Except

Операторът assert определя дали стойностите са равни. Блокът try предизвиква грешка AssertionError, защото тези цели числа не са равни. Командата за печат се изпълнява след като блокът за изключение е уловил изключението. Тук се показва изходът на оператора за печат от блока за изключение. Ключовата дума raise може да се използва за повторно повдигане на грешката в блока за изключение, така че да можем да определим източника на изключението. Когато възникне изключение, ключовата дума „raise“ ще предизвика грешка и ще прекрати програмата. Помага при поддържането или поддържането на запис/проследяване на съществуващото изключение.

Обработване на AssertionError с помощта на модула за проследяване

Когато кодът съдържа няколко твърдения за твърдения, модулът за проследяване помага при идентифицирането на точния източник на грешката.

Използвайки модула за проследяване, нашата декларация за печат може да бъде написана със запазени места {}.

Освен това можем да дефинираме други променливи за съхраняване на позицията на реда, името на файла, името на метода, както и текста/съобщението, където е възникнало изключението.

Обектът за обратно проследяване се нарича „tb“. Използваме два контейнера: един за текста и един за позицията на реда в оператора за печат.

Трите компонента на израза „raise“ — exc_type, exc_traceback и exc_value — се връщат от функцията sys.exc_info().

Обработка на AssertionError с помощта на оператора print

За да обработим ръчно изключение, можем да използваме изявлението „print“ вътре в блока за изключение.

Операторът за печат отпечатва всяко съобщение за грешка, което потребителят въвежда. С този метод техническата грешка няма да бъде проблем за потребителя.

Вместо грешка се показва кратко съобщение.

Заключение

В тази публикация за първи път видяхме въвеждането на изключения в Python. Обсъдихме AssertionError, как работи и как можем да внедрим AssertionError в Python. Обяснихме няколко предимства на AssertionError и как можем да ги избегнем. В последния раздел на тази публикация видяхме как можем да се справим с AssertionError в Python с помощта на Try-Except Blocks, модула за проследяване и командата за печат.