파이썬 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번 장점이 더해진다.
'Python > 파이썬 기초' 카테고리의 다른 글
파이썬 변수 여러개 동시 생성 방법(동적 변수 만들기) : globals() (2) | 2022.03.15 |
---|---|
파이썬 filter 함수 사용 예제 정리(lambda, def, 문자열 예시) (2) | 2022.03.05 |
파이썬 import와 from import의 사용 방법 비교, 구분 이유 (4) | 2022.02.23 |