False와 동등한 반환 값을 잘못 해석하는 경우는 None이 특별한 의미를 가지는 파이썬 코드에서 흔히 저지르는 실수다.
아래 코드처럼 result는 0이 되어야 하는데, 잘못된 입력이 출력되는 상황이 발생한다.
x, y = 0, 5
def careful_divide(a, b):
try:
return a / b
except ZeroDivisionError:
return None
result = careful_divide(x, y)
if not result:
print('잘못된 입력')
이를 해결하기 위해 두 가지 방법을 생각해볼 수 있다.
- 반환 값을 튜플로 분리한다.
- 첫 번째 요소에 성공 여부를 표시한다.
- 두 번째 요소에 실제 값을 표시한다.
- Exception을 호출한 쪽으로 발생시켜서 호출자가 이를 처리하게 한다.