@ 17. 1 ~ 18/파이썬

파이썬 None

namoeye 2018. 3. 18. 17:33

특별한 의미를 나타내려고 함수의 반환값에(뭐 보통은..error나 잘못된 리턴값을 표현할때?) None을 하게된다면..

오류를 일으키기 쉬울 수도 있다. 이유는 None이나 다른 값이 조건식에서 False로 평가되기 때문이다.


def divide(a,b):
try:
return a/b
except ZeroDivisionError:
return None

result = divide(0, 0)
if result is None:
print("None inputs")

if result:
print("True Input")

if not result:
print("False inputs")

if result is False:
print("is False inputs")

결과값

None inputs
False inputs


위처럼 특별한 상황이라면 예외를 알리는게 낫다.



def divide(a,b):
try:
return a/b
except ZeroDivisionError:
raise ValueError("Input Error")

result = divide(0, 0)

결과값

Traceback (most recent call last):

File "c:\Users\123\Desktop\study\test.py", line 75, in <module>

result = divide(0, 0)
File "c:\Users\123\Desktop\study\test.py", line 73, in divide
raise ValueError("Input Error")
ValueError: Input Error


이렇게 된다면 함수의 반환값을 조건식으로 검사할 필요가 없어진다. 오히려 호출하는 쪽에서 잘못된 입력에 대해 예외처리를 하게된다.