assert문은 디버깅 목적을 위해서 프로그램에 삽입하여 사용합니다.
일반적인 사용은 아래와 같습니다.
assert expression ["," expression]
단순한 형태의 assert문은 아래와 같으며,
assert expression
이는 아래 코드와 동일합니다.
if __debug__:
if not expression: raise AssertionError
조금더 확장된 형태의 assert문은 아래와 같으며
assert expression1, expression2
아래 코드와 같습니다.
if __debug__:
if not expression1: raise AssertionError(expression2)
아래 간단한 예제를 보시면
| rate = 0.9 assert 0.0 <= rate <= 1.0 print ("Rate is correct range.") rate = 1.1 assert 0.0 <= rate <= 1.0 print ("Rate is out of range.") |
첫번째 assert문에서 rate의 값이 범위내에 있으므로 assert 자체가 True가 되어 다음 코드로 넘어갑니다. 하지만 두번째 assert문에서는 범위를 벗어나므로 아래와 같이 AssertionError가 발생됩니다.
| Rate is in range. Traceback (most recent call last): File "assert_test1.py", line 9, in <module> assert 0.0 <= rate <= 1.0 AssertionError |
단순히 AssertionError만 발생하면 어떤 이유인지 어느 assert문에서 발생했는지를 모르기 때문에 아래와 같이 많이 사용합니다.
| rate = 1.1 assert 0.0 <= rate <= 1.0, "Out of range" print ("Rate is out of range.") |
그러면 아래와 같이 어떤 AssertionError인지를 명확히 알고 디버깅을 할 수 있습니다.
| Traceback (most recent call last): File "assert_test1.py", line 9, in <module> assert 0.0 <= rate <= 1.0, "Out of range" AssertionError: Out of range |
AssertionError가 발생이 되면 파이썬 프로그램이 바로 중지되기 때문에 try-except문과 같이 사용하여 에러처리를 해주는 것이 좋습니다.
| try: rate = 1.1 assert 0.0 <= rate <= 1.0, "Out of range" except AssertionError as err: print(err) # print assert expression rate = rate * 0.5 print ("Rate is adjusted under 1.0") |
그러면 아래와 같이 에러처리까지 깔끔하게 진행시킬 수가 있습니다.
| Out of range Rate is adjusted under 1.0 |
'파이썬 (Python) > 파이썬 키워드' 카테고리의 다른 글
| [파이썬] 함수에서 결과값을 반환시키는 return 키워드 (0) | 2021.06.29 |
|---|---|
| [파이썬] 변수 개체를 삭제하는 del 키워드 (0) | 2021.06.29 |
| [파이썬] 로컬변수가 아님을 선언하기 위한 nonlocal 키워드 (0) | 2021.06.29 |
| [파이썬] 로컬에서 전역변수를 사용하기 위한 global 키워드 (0) | 2021.06.29 |
| [파이썬] pass 키워드 사용법 (0) | 2021.06.29 |