IT/언어

[python] assert문 간단 사용법

개발자 두더지 2021. 9. 1. 00:54
728x90

assert문이란?


 조건문이 True가 아닐 경우, 예외를 일으킨다. 지금까지 잘 움직이던 코드이지만, 추가로 코드를 작성했을 때 예상하지 못한 다른 동작을 하게 될 경우 assert문을 작성해둠으로써 빠르게 이를 방지할 수 있다. 

 머신러닝이나 데이터 분석에서는 사양을 정해져 있지 않아 시행착오를 거쳐야할 부분이 많고, 일회성 대응도 꽤 있어, 테스트 코드를 작성하는 것이 낯선 경우가 많다. 이러한 경우 assert문을 작성하는 것을 추천한다.

 assert문은 Jupyter Notebook에서 사용하는 것이 제일 효과가 좋다고 개인적으로 생각한다. 또한, 데이터를 읽어 들인 직후에 데이터 체크하거나, 데이터의 결합이나 갱신 직후에, 중복이나 결손값(NA)을 확인할 때에 사용하는 것도 좋다고 생각한다. 

 

 

사용법


assert 구문의 문법은 다음과 같다.

assert 조건식, 조건식이False인 경우 출력되는 메시지

조건식이 False인 경우, AssertionError예외가 발생한다.

조건식이 True인 경우 어떠한 메시지도 표시되지 않는다.

>>> kitai = 100
>>> input = 1
>>> assert kitai == input, '기대한 값은[{0}], 입력값은[{1}]'.format(kitai, input)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError: 기대한 값은[100], 입력값은[1]

제대로 예외처리가 이루어지고 있다.

>>> try:
...     kitai = 100
...     input = 1
...     assert kitai == input, '기대하는 값은[{0}], 입력값은[{1}]'.format(kitai, input)
... except AssertionError as err:
...     print('AssertionError :', err)
... 

AssertionError : 기대하는 값은[100], 입력값은[1]

 

 

assert문을 무효로하는 방법


assert문은 임베디드 정수 __bebug__가 True인 경우에 실행된다. 특별히 어떠한 조작을 하지 않으면 이 상태로 유지된다. Python 스크립트 실행시의 커맨드 라인 옵션에 -O를 붙이면,  __bebug__가 False가 되어, assert문이 무효가 된다.


참고자료

https://qiita.com/nannoki/items/15004992b6bb5637a9cd

728x90