Python/파이썬 기초

파이썬 assert 사용법, 사용 이유 정리

jimmy_AI 2022. 3. 15. 20:50
반응형

파이썬 assert 문 예제

이번 글에서는 파이썬 코드 파일 앞 부분에 자주 등장하는

assert 구문의 문법과 적절히 사용하면 좋은 이유에 대하여 정리해보도록 하겠습니다.

 

 

assert 구문 기본 사용 방법

예를 들어, 가위 바위 보 게임을 구현하고 싶은 상황을 가정해보겠습니다.

만일 제가 가위, 바위, 보 중 하나가 아니라 엉뚱한 수(안 내기, 따봉 등)를 낸다면

게임이 정상적으로 성사될 수 있을까요? 아마 그렇지 못할 것입니다.

 

이렇게 뒷 부분의 코드가 정상적으로 실행되기 위한 input 조건을 검사하는 상황에서

assert 문은 매우 큰 장점을 가지며 활용될 수 있습니다.

 

assert 구문의 기본적인 사용법은 assert 만족해야할 조건 형태로 작성해주시면 됩니다.

x = input('내고 싶은 수를 입력하세요.')

assert x in ['가위', '바위', '보']

print('%s를 내셨습니다.'%x)

여기서 주의할 점은 in 대신 not in 처럼 만족해야할 조건의 반대 형태로 작성하시면 안됩니다.

 

만일, 정상적인 input이 들어왔다면 아래 부분의 코드 출력이 정상적으로 될 것입니다.

 

반면, 원하지 않는 input이 들어왔다면 AssertionError가 발생하며, 코드 실행이 종료됩니다.

반응형

assert 구문 오류 메시지 설정 방법

AssertionError가 발생한 경우, 사용자에게 어떤 종류의 조건이 만족되지 못했는지를

알려줄 수 있다면 큰 도움이 될 것입니다.

 

이를 위하여, assert 만족해야할 조건, 오류 메시지 형태로 출력할 메시지를 지정할 수 있습니다.

x = input('내고 싶은 수를 입력하세요.')

assert x in ['가위', '바위', '보'], '가위, 바위, 보 중 하나만 낼 수 있습니다.'

print('%s를 내셨습니다.'%x)

위와 같이 assert 조건 뒤에 문자열을 적어주면 오류 발생 시 아래처럼 메시지가 출력됩니다.

 

 

assert 구문 사용 이유, 장점

사실, assert 문은 if ~ raise 구문으로 대체가 가능합니다.

아래 두 코드는 실제로 거의 완전히 동일한 기능을 수행하고 있습니다.

# assert 문 예제

x = input('내고 싶은 수를 입력하세요.')

assert x in ['가위', '바위', '보'], '가위, 바위, 보 중 하나만 낼 수 있습니다.'

'''가위 바위 보 게임 코드 
~~~
~~~
~~~
~~'''
# if ~ raise 문 예제

x = input('내고 싶은 수를 입력하세요.')

if x in ['가위', '바위', '보']:
    '''가위 바위 보 게임 코드 
    ~~~
    ~~~
    ~~~
    ~~'''
else:
    raise AssertionError('가위, 바위, 보 중 하나만 낼 수 있습니다.')

그러나, assert 문을 사용하게 되면 다음과 같은 장점이 있어서 코드 작성에 유리합니다.

 

1. 코드 앞 부분에 만족해야할 조건들을 한번에 몰아서 검사할 수 있다.

2. 검사해야할 조건이 여러개인 경우, 가독성이 향상되고 디버깅이 편해질 수 있다.

3. 코드 실행 부가 길어질 경우, 조건 검사를 앞으로 따로 빼면서 2번 장점이 더해진다.