NaN과 Null은 모두 Python에서 값이 없는 것을 나타내는 특수 값이지만, 의미와 사용법에 차이가 있다.
- NaN
- NaN은 "Not a Number"의 약자로, 숫자 연산의 결과가 유효하지 않을 때 발생하는 값이다.
- 0으로 나누기, 로그 취하기, 제곱근 구하기 등의 경우 NaN을 사용할 수 있다.
- NaN은 숫자 타입(float)으로 취급된다.
- 비교 연산자를 사용하여 NaN과 다른 값을 비교하면 False가 반환된다.
- NaN은 수치 계산에 참여할 수 있으며, 계산 결과에 영향을 미칠 수 있다.
- Null
- Null은 값이 없는 것을 나타내는 특수 값이다.
- 데이터베이스에서 값이 없는 필드를 나타내는 데 사용된다.
- None이라는 값으로 표현된다.
- Null은 NoneType이라는 타입으로 취급된다.
- 비교 연산자를 사용하여 Null과 다른 값을 비교하면 False가 반환된다.
- Null은 수치 계산에 참여할 수 없으며, 계산 결과에 영향을 미치지 않는다.
- 예시 및 주요 차이점
# NaN 예시
print(0 / 0) # NaN
print(math.log(-1)) # NaN
# Null 예시
x = None
print(x) # None
print(type(x)) # <class 'NoneType'>
# 비교 연산 예시
print(NaN == 0) # False
print(Null == 0) # False
# 수치 계산 예시
print(NaN + 1) # NaN
print(Null + 1) # TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'