[]visited = []
visited는 빈 리스트print(visited) # []
print(len(visited)) # 0
print(visited is None) # False
Nonevisited = None
visited라는 변수는 존재함None이라는 값이 들어 있음print(visited) # None
print(visited is None) # True
None은 초기화가 안 된 상태가 아니라,
값이 없음을 나타내는 특별한 값이다.
if visited:
print("실행")
visited를 이전에 정의하지 않았다면:
NameError: name 'visited' is not defined
즉, 변수 자체가 없는 상태다.
| 코드 | 의미 |
|---|---|
visited = [] | 빈 리스트 |
visited = None | 값이 없음을 나타내는 None |
| 선언하지 않음 | 변수 자체가 존재하지 않음 |
if에서의 동작빈 리스트와 None은 둘 다 조건문에서 False처럼 취급된다.
visited = []
if visited:
print("실행")
실행되지 않는다.
visited = None
if visited:
print("실행")
이것도 실행되지 않는다.
bool([]) # False
bool(None) # False
하지만 둘은 같은 값은 아니다.
[] == None # False
[] is None # False
None도 객체이자 값이다Python에서 None은 단순히 "아무것도 없음"이 아니라 하나의 값(value) 이다.
또한 Python에서는 값들이 객체로 다뤄지기 때문에 None도 하나의 객체(object) 다.
x = None
print(type(x))
# <class 'NoneType'>
[] → 리스트는 존재하지만 비어 있음None → 변수는 존재하지만 값이 없음을 표현또한 미정의 변수를 if visited:처럼 사용하면
False가 되는 것이 아니라 NameError가 발생한다.