파이썬/변수와 데이터 타입

파이썬 None 완벽 정리 - None vs 빈 값 차이, is 비교, 함수 반환까지 한 번에 끝내기

creator6556 2025. 12. 4. 19:42

1 None을 왜 배워야 할까?

→ 파이썬에는 '값이 있지만 비어 있는 상태'와 '값 자체가 없는 상태'가 존재함

→ 0, '', [] 같은 값들은 비어 보이지만 실제 값이고, None은 '아직 값이 없다'라는 상태를 표현할 때 사용하는 것


2 None의 정의와 타입 (NoneType)

→ None은 값이 없는 상태를 표현하는 특별한 객체이며, 그 타입 이름은 NoneType

파이썬 전체 프로그램에서 단 하나만 존재하며, 실무에서는 NoneType을 직접 다루지 않고 그냥 None을 사용

1-1 코드

print(type(None))  # <class 'NoneType'>

1-1 결과


3 변수 초기화에서 None이 쓰이는 이유

변수는 필요하지만 값은 아직 준비되지 않았을 때 사용하며, 값이 들어오면 그대로 대입하면 됨

2-1 코드

item = None
item = 'Apple'
print(item)

2-1 결과


4 함수와 None - 자동 반환 & 명시적 반환

1) return이 없어도 함수는 항상 None을 반환

3-1 코드

def hello():
    print('hi')

print(hello())   # hi 출력 후 None이 자동 반환

3-1 결과


2) 결과가 없음을 알릴 때 명시적으로 None 사용

3-2 코드

users = ['Tom', 'Andy']

def find_user(name):
    if name in users:
        return users[name]
    return None

print(find_user('Aim'))

3-2 결과


728x90

5 None 비교 방법 - == 말고 is

→ ==은 값을 비교하고, is는 같은 객체인지 비교함

None은 프로그램 전체에서 하나만 존재하므로 is가 정확

if x is None:
    ...
if x is not None:
    ...

6 Truthy / Falsy에서의 None

bool(None)은 False로 평가되어 조건문에서 거짓처럼 동작하지만 False와 같은 값은 아님

→ None은 동작 방식은 False와 비슷하지만 의미는 '값 없음'

if value:
    ...
else:
    ...  # None이면 여기 실행

7 None vs 빈 값 - 가장 많이 헷갈리는 부분

None값 자체가 없음을 의미하며, 아직 정해지지 않은 값

빈 값값은 있지만 비어 있음을 의미하며, '', [],  {}, 0 등이 있음

4-1 코드

name = None
empty = ''

print(name is None)      # True
print(empty is None)     # False

4-1 결과


8 실전에서 가장 많이 쓰는 None 패턴

→ 선택적 파라미터 기본값에서 값 전달 여부를 명확히 구분하기 위해 사용함

→ 검색/조회 실패 시 반환값으로 '결과 없음'을 표현함

→ 나중에 채워질 값 초기화에 빈 칸 역할을 함

→ 값 존재 여부에 따라 분기할 때 기본 동작 vs 값 활용에서 사용함

→ 캐싱/초기화 여부 판단에서 한 번만 계산 후 재사용함


9 자주 하는 실수 & 올바른 습관

→ x == None 대신에 x is None을 사용하기

→ if not x:로 None을 판단하지 말고 if x is None:을 사용하기

→ print() 결과가 변수에 저장된다고 생각하지만 print의 반환값은 항상 None

→ None에 연산/메서드를 호출할 때 전에 x is not None을 사용하기

→ 기본 매개변수에 [] 같은 가변 객체를 사용할 때 tags=None으로 내부에서 생성하기


Python None에 대해 더 상세한 설명을 원하는 분들은 아래 사이트에 접속하기

Python None


Python None뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기

프로그래밍 언어 정리 모음 

728x90