None은 파이썬에서 「값이 없음」을 명시적으로 표현하는 특별한 값입니다.
다른 언어의 null이나 nil과 비슷한 역할이며, 「아직 정해지지 않은 값」, 「반환할 값이 없을 때」, 「초기값」 같은 자리에 자주 쓰입니다.
None은 NoneType이라는 특별한 자료형의 유일한 값입니다.
result = None — 변수에 「값 없음」을 명시적으로 할당.
함수가 명시적 return 없이 끝나면 자동으로 None을 반환하므로, def hello(): print("hi")의 결과를 변수에 받으면 그 변수는 None이 됩니다.
None 검사는 「is None」을 쓰는 것이 PEP 8 권장입니다.
if x is None: — 깔끔하고 빠름.
if x == None: 도 동작하지만 비추.
None은 유일한 값이므로 「is」(같은 객체인가)로 비교하는 게 의미적으로 정확합니다.
비유하자면 None은 「빈 종이」와 같습니다.
0(숫자 0)이나 ""(빈 문자열)이 「뭔가 표시된 종이」라면, None은 「아무것도 표시되지 않은 종이」입니다.
「값이 0인 것」과 「값이 없는 것」은 의미가 다르며, 둘을 명확히 구분하기 위해 None이 필요합니다.
함수의 매개변수 기본값으로 None을 자주 씁니다.
def my_func(items=None): if items is None: items = [].
「리스트를 안 주면 빈 리스트로」 같은 패턴에 쓰입니다.
직접 「items=[]」을 기본값으로 두면 「가변 기본 인자 함정」(여러 호출에서 같은 리스트가 공유되는 버그)에 빠질 수 있어, None을 기본값으로 두는 게 안전합니다.
한 줄 요약
None은 「값이 없음」을 표현하는 특별한 값으로, 함수가 return 없이 끝나면 자동 반환됩니다.
검사는 「is None」으로 하는 것이 PEP 8 권장이며, 가변 기본 인자 함정을 피할 때도 자주 씁니다.
더 알아볼 것
- 가변 기본 인자(mutable default arg) 함정
- Optional 타입 힌트 — None을 명시
- Null Object Pattern — None의 객체지향 대안