본문 바로가기
목차
Python

[Py] assert 구문 (statement)

by ds31x 2024. 9. 24.
728x90
반응형

https://www.geeksforgeeks.org/python/python-assert-keyword/

디버깅에서 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 != 0False 일 때,
  • b가 0일 경우 AssertionError가 발생하며
  • "b는 0일 수 없습니다." 라는 메시지가 출력됨.

사용 시 유의점

  1. 디버깅 도구:
  • assert는 디버깅 및 개발과정에만 사용되는 것을 원칙으로 하므로,
  • 프로그램 배포 시에는 아예 assert를 비활성화하는 기능을 제공함.

Python에서는 -O(=Optimize) 플래그를 사용하여
최적화된 코드로 실행하면 assert가 제거됨.

  1. 에러 처리용으로는 부적합:
  • assert는 디버깅 도구일 뿐, 정상적인 에러 처리 흐름을 대신해선 안 됨.
  • 예상 가능한 오류 상황으로 해당 오류로부터 프로그램이 복구되어야 하는 경우엔 try-except 구문을 사용해야 함.

결론

따라서 assert

  1. 코드의 신뢰성을 검증하고
  2. 디버깅을 돕는 도구로 사용되며,
  3. 코드의 논리적인 전제 조건이 충족되는지 확인할 때 사용됨.

같이 읽어보면 좋은 자료들

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


 

728x90

'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