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 |