파이썬 주장 오류

Paisseon Jujang Olyu



Python 프로그램을 실행하는 동안 예기치 않은 조건이 발생하면 프로그램이 실행을 중지하고 예외를 반환합니다. Python에서 예외와 구문 오류는 오류의 두 가지 주요 범주입니다. 구문적으로 유효한 Python 코드가 오류를 생성하는 경우 이를 예외/오류 발생이라고 합니다. 마지막 줄의 오류 메시지는 정확한 예외 유형을 정의하고 디버깅에 도움이 되는 설명을 제공하며 화살표는 예외가 발생한 줄이나 위치를 가리킵니다. 갑작스러운 프로그램 충돌을 방지하려면 예외를 포착하고 관리하는 것이 중요합니다. 다른 방법을 사용하여 코드를 실행하세요. 예를 들어 지정된 예외가 발생할 때. 이 자습서에서는 AssertionError와 Python에서 이를 해결할 수 있는 방법에 대해 설명합니다.

Python에서 AssertionError는 무엇입니까?

어설션 오류는 프로그래머가 모듈이 실행되기 전에 충족할 기준이나 조건을 선언하는 데 사용되는 코드 블록을 작성하거나 만들 때 발생하는 프로그래밍 개념입니다. 모든 Python 오류와 마찬가지로 주장이 true로 선언될 때 지정된 조건이 있으면 제어가 후속 코드 줄로 이전됩니다. 반면에 false이면 오류 또는 예외가 발생하고 프로그램이 중지됩니다. assert 문은 언어에 독립적이기 때문에 특정 구문을 사용하여 다양한 프로그래밍 언어에서 사용할 수 있습니다. Exception 클래스의 하위 클래스 또는 인스턴스입니다. Python AssertionError의 구문은 다음과 같습니다.

통사론: 주장 조건, error_message(선택사항)







예시

입력으로 사람의 나이를 입력하고 0보다 작으면 콘솔에서 어설션 오류가 발생합니다.





이제 나이를 0보다 작게 입력하면 어떻게 될까요?





이 방법을 사용하여 코드를 디버깅하는 것이 더 간단하므로 프로그램에서 오류를 찾고 버그를 수정하기가 더 쉽습니다.



Python에서 AssertionError가 작동하는 방식

Python 언어에는 논리적 주장과 함께 간단한 오류 메시지 출력을 생성하는 데 사용할 수 있는 주장 문이 포함되어 있습니다. 어설션 문이 실패하면 '예외' AssertionError가 발생합니다. Python에서 예외 클래스는 BaseException 클래스에서 파생됩니다. AssertionError 클래스의 기본 클래스이기도 한 BaseException 클래스는 Exception 클래스가 파생되는 곳입니다. assert 문의 실패를 처리할 적절한 예외 처리 코드가 항상 있어야 합니다. Python의 기본 예외 처리기는 프로그래머가 작성한 오류 메시지를 인쇄하지만 오류 메시지 없이 오류를 처리하거나 해결할 수도 있습니다.

Python에서 AssertionError 구현하기

다음은 Python에서 AssertionError의 몇 가지 예입니다.

예시

이 예제에서는 원의 영역을 찾는 프로그램에서 AssertionError를 표시하는 Python 프로그램을 작성합니다.

반경 'r' 값은 원의 면적을 찾기 위해 생성된 이전 프로그램의 함수에 대한 입력으로 전달됩니다. 그런 다음 assert 문을 사용하여 제공된 값 또는 반경 'r'이 0 미만인지 확인하고 음수 값이 제공되면 예외가 발생합니다. 함수에 제공된 반경 'r' 값을 기반으로 원의 면적이 반환됩니다. 먼저 함수는 r 값을 3으로 하여 실행됩니다. 그런 다음 함수는 값 2.5로 실행됩니다. AssertionError는 'r'의 음수 값, 즉 '-1'을 사용할 때 발생합니다.

Assertion 오류의 발생을 표시하기 위해 다른 예를 시도해 보겠습니다.

예시

이 예시에서 프로그램은 분모 값이 0이 아닌지 확인합니다.

어설션 오류의 오류 메시지는 이전 프로그램에 표시됩니다. 두 개의 변수(a 및 b)를 생성했으며 정수 값이 변수를 지정합니다. 그런 다음 두 번째 변수, 즉 b는 assert 문을 사용하여 0이 아닌지 확인하기 위해 테스트됩니다. 그렇지 않으면 오류 메시지가 인쇄됩니다. 그렇지 않은 경우 첫 번째 숫자를 두 번째 값으로 나눈 결과가 표시됩니다. 이전 이미지에서 프로그램의 출력이 표시됩니다.

AssertionError의 응용

어설션 오류의 다른 유용한 용도는 다음과 같습니다.

  • 어설션은 매개변수 값을 평가하는 데 도움이 됩니다.
  • 어설션은 입력 유형과 해당 값이 유효한지 모니터링하는 데 도움이 됩니다.
  • 또한 어설션은 다른 코드 개발자가 인터페이스를 오용하는지 여부를 식별하는 데 도움이 됩니다.
  • 어설션은 프로그램의 출력을 지속적으로 모니터링하는 데 도움이 됩니다.

Python에서 Assert 오류를 피하는 방법

  1. Python 프로그램의 -O 플래그는 모든 어설션 문을 비활성화하는 데 사용할 수 있습니다. 어설션 문을 사용 중지하면 어설션 문 뒤에 오는 문은 실행되지 않는다는 점에 유의하는 것이 중요합니다.
  2. 환경 변수는 플래그를 설정하여 어설션 문을 끌 수도 있습니다. 이 상황에서는 환경을 사용하거나 상속하는 모든 프로세스와 응용 프로그램이 영향을 받습니다.
  3. Python에서 어설션 오류를 방지하는 가장 간단한 방법은 수동으로 처리하는 것입니다. 프로그램의 제어 흐름이 전환되어 assert 문에 액세스하지 않도록 하면 주장 오류가 발생할 가능성이 없습니다.

AssertionError 처리

어설션 문 외에도 다음 방법을 사용하여 어설션 오류를 처리할 수도 있습니다.

Try-Except 블록을 사용하여 어설션 오류 처리

assert 문은 값이 동일한지 여부를 결정합니다. 이러한 정수가 같지 않기 때문에 try 블록은 AssertionError 오류를 발생시킵니다. 예외 블록이 예외를 포착한 후 인쇄 명령이 실행됩니다. 여기에 예외 블록의 print 문의 출력이 표시됩니다. raise 키워드는 예외의 소스를 결정할 수 있도록 예외 블록에서 오류를 다시 발생시키는 데 사용할 수 있습니다. 예외가 발생하면 'raise' 키워드가 오류를 발생시키고 프로그램을 종료합니다. 기존 예외의 기록/추적을 유지하거나 유지하는 데 도움이 됩니다.

역추적 모듈을 사용하여 AssertionError 처리

코드에 여러 assert 문이 포함되어 있는 경우 역추적 모듈은 정확한 오류 소스를 식별하는 데 도움이 됩니다.

트레이스백 모듈을 사용하면 자리 표시자 {}로 print 문을 작성할 수 있습니다.

또한 줄 위치, 파일 이름, 메서드 이름, 예외가 발생한 텍스트/메시지를 저장하기 위해 다른 변수를 정의할 수 있습니다.

역추적 객체를 'tb'라고 합니다. 두 개의 자리 표시자를 사용합니다. 하나는 텍스트용이고 다른 하나는 인쇄 문의 줄 위치용입니다.

'raise' 문의 세 가지 구성요소인 exc_type, exc_traceback, exc_value는 sys.exc_info() 함수에서 반환됩니다.

print 문을 사용하여 AssertionError 처리하기

예외를 수동으로 처리하기 위해 예외 블록 내에서 '인쇄' 문을 사용할 수 있습니다.

print 문은 사용자가 입력하는 모든 오류 메시지를 인쇄합니다. 이 방법을 사용하면 기술적 오류가 사용자에게 문제가 되지 않습니다.

오류 대신 간단한 메시지가 표시됩니다.

결론

이 게시물에서 우리는 먼저 Python에서 예외가 도입되는 것을 보았습니다. AssertionError, 작동 방식, Python에서 AssertionError를 구현하는 방법에 대해 논의했습니다. AssertionError의 몇 가지 장점과 이를 방지할 수 있는 방법에 대해 설명했습니다. 이 게시물의 마지막 섹션에서 Try-Except 블록, 역추적 모듈 및 인쇄 문을 사용하여 Python에서 AssertionError를 처리하는 방법을 살펴보았습니다.