
디버깅에서 assert는
프로그램의 특정 조건이 참인지 확인하는 데
사용되는 statement(구문).
assert는
- 주어진 조건이 참(
True)일 때는 아무런 영향을 미치지 않지만, - 조건이 거짓(
False)일 경우 프로그램을 중단하고AssertionError를 발생시킴.
assert의 주요 목적은
코드 실행 중 특정 조건이 반드시 충족되어야 함을 확인하는 것.
이를 통해 디버깅 단계에서 잠재적인 오류나 논리적 문제를 빠르게 발견할 수 있음: "fast-failing"을 통해 개발과정에서 버그를 줄이는데 사용됨.
Assertions는 일종의 sanity check (정상성 검사)로서,
- 개발과정 중에만 사용되며, 반드시 일어나서는 안되는 오류를 개발과정에서 제거하기 위해서임.
- AssertionError는 개발 과정 중에 프로그래머 만이 만나야하지, 이를 배포 후 사용자가 만나게 되어선 안 됨.
- 즉, 복구를 시도할 수 없는 또는 시도해선 안되는(try-except를 통한 예외처리를 의미) 경우의 오류를 대상으로 한다.
기본 구문
assert 조건, "에러 메시지"
조건:True인지False인지를 평가하는 논리식."에러 메시지": 선택 사항이며,AssertionError가 발생할 때 출력되는 메시지.
예시
def divide(a, b):
assert b != 0, "b는 0일 수 없습니다."
return a / b
print(divide(10, 2)) # 정상 출력
print(divide(10, 0)) # AssertionError 발생
위 코드에서
b != 0이False일 때,- 즉
b가 0일 경우AssertionError가 발생하며 - "b는 0일 수 없습니다." 라는 메시지가 출력됨.
사용 시 유의점
- 디버깅 도구:
assert는 디버깅 및 개발과정에만 사용되는 것을 원칙으로 하므로,- 프로그램 배포 시에는 아예
assert를 비활성화하는 기능을 제공함.
Python에서는
-O(=Optimize) 플래그를 사용하여
최적화된 코드로 실행하면assert가 제거됨.
- 에러 처리용으로는 부적합:
assert는 디버깅 도구일 뿐, 정상적인 에러 처리 흐름을 대신해선 안 됨.- 예상 가능한 오류 상황으로 해당 오류로부터 프로그램이 복구되어야 하는 경우엔
try-except구문을 사용해야 함.
결론
따라서 assert는
- 코드의 신뢰성을 검증하고
- 디버깅을 돕는 도구로 사용되며,
- 코드의 논리적인 전제 조건이 충족되는지 확인할 때 사용됨.
같이 읽어보면 좋은 자료들
2023.10.06 - [분류 전체보기] - [Python] Python 정리
[Summary] Python 정리
Programming Language and Python 소개2023.10.23 - [Python] - [Python] Programming Language and Introduction of Python. [Python] Programming Language and Introduction of Python.Computer and Programhttps://dsaint31.tistory.com/436: computer 의 정의와 pr
ds31x.tistory.com
https://dsaint31.tistory.com/526
[Python] Exception 처리
1. Exception 발생 시 기본 동작Python에서 무엇인가가 잘못된 경우, python interpreter는 exception을 발생시킴.Exception : 동작을 중단시키는 에러를 가르킴.Exception handling : Exception 처리라고도 불리며, 발생
dsaint31.tistory.com
'Python' 카테고리의 다른 글
| [Py] Debug: Error and Exception. (1) | 2024.09.25 |
|---|---|
| [Py] Debugging: pdb and ipdb (0) | 2024.09.25 |
| [CV] cv2.calibrateCamera (1) | 2024.09.22 |
| [Etc] SW Version: Semantic Versioning + packaging.version (0) | 2024.09.19 |
| [Summary] NumPy(Numerical Python) (3) | 2024.09.12 |