[파이썬 튜토리얼] None

None, NoneType

·

1 min read

Level 1

None값이 없음, 알 수 없음 정도의 의미를 가진다. 정수 0이나 빈 문자열 ''과 비슷하다고 생각할 수 있는데, 이들과 None은 완전히 다르다. 예를 들어 시험 점수가 0점인 것과, 점수가 정해지지 않은 것은 다르다. 이렇게 '알 수 없음'을 나타내기 위해 None을 사용할 수 있다.

score_100 = 100
score_0 = 0
score_none = None

print(score_none)

결과

None

자투리 지식

null, None, nil

Python의 None처럼 '값이 없음'을 의미하는 값은 프로그래밍 언어마다 조금씩 다르다. null이 가장 대표적이고, NULL처럼 대문자로 표현하거나 None, nil로 표현하는 경우도 있다. 그러나, 프로그래밍 언어에 따라서는 이렇게 조금씩 다르지만, 보통은 null로 통한다.

Level 3

None과 NoneType

None은 NoneType 타입의 객체다.

print(type(None))

결과

<class 'NoneType'>

int, str과 같은 일반적인 타입들과 다르게, NoneType은 빌트인에 존재하지 않는다.

print(int)
print(int)
print(NoneType)

결과

<class 'int'>
<class 'int'>
Traceback (most recent call last):
  File "example.py", line 3, in <module>
    print(NoneType)
NameError: name 'NoneType' is not defined

Python 2에서는 types라는 모듈에 NoneType이 존재했으나, Python 3에서는 사라지게 되어 지금은 isinstance(x, NoneType)과 같은 코드를 사용할 수 없다. 그러나 어떤 값의 None 여부를 판단하기 위해서는 isinstance 함수를 쓸 것 없이, x is None을 사용하면 된다. NoneType을 굳이 쓰고 싶다면, NoneType = type(None) 처럼 정의해서 사용하도록 하자. Python 2의 types 모듈에서도 그렇게 하고 있었다 (실제 CPython 2.7의 types.py 코드).