Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python assert 키워드 완벽 가이드: 사용자 정의 오류 메시지로 손쉽게 디버깅하기

모든 프로그래밍 언어에는 프로그램 실행 중 발생하는 예외(exception)를 처리하는 기능이 내장되어 있습니다. Python에서는 assert 키워드를 사용해 오류를 미리 검사하고, 시스템이 자동으로 생성하는 오류 메시지 대신 개발자가 직접 작성한 오류 메시지를 출력할 수 있습니다. 이렇게 하면 오류가 발생했을 때 원인과 위치를 훨씬 빠르게 파악하고 수정할 수 있어 디버깅 효율이 크게 향상됩니다.

assert 문을 사용한 경우

다음 예제에서는 assert 키워드를 활용하여 0으로 나누는 오류(ZeroDivisionError)를 사전에 잡아냅니다. 오류 메시지는 개발자가 원하는 대로 자유롭게 작성할 수 있습니다.

예제 코드

x = 4
y = 0
assert y != 0, "if you divide by 0 it gives error"
print("Given values are ","x:",x ,"y:",y)
print("\nmultiplication of x and y is",x * y)
print("\ndivision of x and y is",x / y)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Traceback (most recent call last):
File "scratch.py", line 3, in
assert y != 0, "if you divide by 0 it gives error"
AssertionError: if you divide by 0 it gives error

assert 조건(y != 0)이 거짓으로 평가되는 순간 프로그램은 즉시 AssertionError를 발생시키고, 개발자가 지정한 메시지인 "if you divide by 0 it gives error"가 함께 출력됩니다. 덕분에 어떤 값이 문제였는지 한눈에 알 수 있습니다.

assert 문을 사용하지 않은 경우

반면 assert 문 없이 실행하면 시스템이 생성한 기본 오류 메시지만 출력됩니다. 이 경우 오류의 실제 원인을 파악하려면 코드를 추가로 추적하고 분석해야 하는 번거로움이 따릅니다.

예제 코드

x = 4
y = 0
#assert y != 0, "if you divide by 0 it gives error"
print("Given values are ","x:",x ,"y:",y)
print("\nmultiplication of x and y is",x * y)
print("\ndivision of x and y is",x / y)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

multiplication of x and y is 0
Traceback (most recent call last):
File "scratch.py", line 6, in <module>
print("\ndivision of x and y is",x / y)
ZeroDivisionError: division by zero

정리

assert 키워드는 assert 조건식, "오류 메시지" 형태로 사용하며, 조건식이 참일 때는 아무 일도 일어나지 않지만 거짓일 경우 즉시 AssertionError와 함께 지정한 메시지를 출력합니다. 특히 함수의 입력값 검증이나 개발 단계에서의 방어적 프로그래밍(defensive programming)에 유용하게 활용할 수 있습니다. 다만 운영 환경에서는 -O 옵션으로 실행하면 assert 문이 무시된다는 점도 함께 기억해 두는 것이 좋습니다.