가정 설명문(assert)

가정 설명문. assert는 assert는 [조건문], [메시지]와 같은 형식으로 사용


a = 3
assert a == 2

# 결과
AssertionError                            Traceback (most recent call last)
Cell In[10], line 2
      1 a = 3
----> 2 assert a == 2

AssertionError: 

assert가 필요한 이유

어떤 함수는 성능을 높이기 위해 반드시 정수만을 입력받아 처리하도록 만들 수 있다. 이런 함수를 만들기 위해서는 반드시 함수에 정수만 들어오는지 확인할 필요가 있다. 이를 위해 if문을 사용할 수도 있고 ‘예외 처리’를 사용할 수도 있지만 ‘가정 설정문’을 사용하는 방법도 있다.


list = [1, 3, 6, 3, 8, 7, 13, 23, 13, 2, 3.14, 2, 3, 7]

def test(value):
    assert type(value) is int, '정수가 아닌 값이 존재함'

for i in list:
    test(i)

# 결과
AssertionError: 정수가 아닌 값이 존재함

list에 실수(3.14)가 있으므로 AssertionError가 발생하였음.

assert 조건, '메시지' 같은 형식으로 작동하는데 여기에서 메시지는 생략 가능하다.

assert문은 단순히 에러를 찾는것이 아니라 값을 보증하기 위해 사용되는데 예를 들어 함수의 입력 값이 어떤 조건의 참임을 보증하기 위해 사용할 수 있고 함수의 반환 값이 어떤 조건에 만족하도록 만들 수 있다. 혹은 변수 값이 변하는 과정에서 특정 부분은 반드시 어떤 영역에 속하는 것을 보증하기 위해 가정 설정문을 통해 확인 할 수도 있다.

이처럼 실수를 가정해 값을 보증하는 방식으로 코딩 하기 때문에 이를 ‘방어적 프로그래밍’이라 부른다.