파이썬에서 null을 의미하는 none을 체크하는 방법을 알아보겠습니다.
none을 체크하기 위해서 비교연산자를 사용하는 경우도 있습니다.
또는 is None 또는 is not None으로 체크를 합니다.
none을 확인하기 위해 비교연산자와 is로 체크 했을때 어떤 차이가 있는지 그리고 어떤 것이 정확한지 예제를 보면서 확인해보겠습니다.
None
파이썬에서 None은 NoneType 타입의 오브젝트입니다.
값이 존재 하지 않는것을 의미합니다.
a = None
print(a)
# None
print(type(a))
# <class 'NoneType'>
변수의 값이 없는 경우 None으로 표시되는 것을 많이 봤습니다.
하지만 함수에 반환값이 없는 경우에도 None으로 표시가 됩니다.
None은 꼭 변수에 값이 없을때만이 아닙니다.
def func_none():
# do something
pass
x = func_none()
print(x)
결과
None
None 비교 연산자
비교 연산자를 사용해 None인지 아닌지 확인을 해보도록 하겠습니다.
a = None
print(a == None)
# True
print(a != None)
# False
비교 연산자를 사용해 출력한 결과를 보면 문제가 없습니다.
하지만 파이썬 프로그래밍 권상사항을 보면 비교 연산자를 사용해 None 체크를 하면 안 된다고 적혀있습니다.
None
같은 싱글톤과의 비교는is
나is not
으로 항상 이루어져야 한다. 등호 연산자는 절대 안 된다.
is None
None을 정확하게 체크 하기 위해서는 is None 또는 is not None을 사용해야합니다.
예제를 보면서 사용 방법과 결과를 보겠습니다.
a = None
print(a is None)
# True
print(a is not None)
# False
is None 을 사용해 None을 체크했습니다.
결과 값으로는 bool 타입인 Ture 또는 False를 반환합니다.
bool 타입을 반환하기 때문에 if 조건문에서 is None을 사용해 분기를 만들 수있습니다.
a = None
if a is None:
print(f'{a} is None')
else:
print(f'{a} is not None')
# None is None
if a is not None:
print(f'{a} is not None')
else:
print(f'{a} is None')
# None is None
float 타입인 nan을 확인하려면 is nan을 사용해야합니다.
is nan 사용 방법은 아래를 참조해주세요.
is None에서 nan을 체크하면 결과가 어떻게 나오는지 확인해보겠습니다.
a = float('nan')
print(type(a))
if a is None:
print(f'{a} is None')
else:
print(f'{a} is not None')
# None is None
if a is not None:
print(f'{a} is not None')
else:
print(f'{a} is None')
결과
<class 'float'>
nan is not None
nan is not None
nan도 값이 존재 하지 않는 null을 의미하지만 none과는 다르기 때문에 정확하게 체크 되지 않았습니다.
데이터 타입에 none으로 비교할 것인지 nan으로 비교할 것인지 선택을 잘 해야합니다.
댓글