값 없음 상태를 정확하게 확인하려면 0, 빈 문자열, 빈 리스트, False처럼 다른 객체들과 구분되지 않는 None 자체를 판별해야 한다는 핵심 내용을 담고 있다. 0이나 빈 문자열 같은 값은 존재하지만 None과는 분리된 별개의 객체이므로, 값의 부재를 나타내는 유일한 객체인 None을 확인하는 것이 중요하다. 따라서 확인 대상은 None 상태의 변수 자체이며, 그것이 실제로 값이 없음(None)인지를 판단하는 것이다.
왜 None 비교에만 특화하는가에 대한 설명도 핵심이다. None은 프로그램 전체에 하나만 존재하는 특별한 객체로, 새로 만들어지는 값이 아니라 항상 그 하나의 객체를 가리킨다. 0이나 빈 컬렉션, False와 같은 값은 같은 개념의 부재를 나타내지 않고 다른 객체로 취급되므로, 단순한 동등 비교로는 정확한 판단이 어렵다. 따라서 우리가 확인하려는 것은 이 변수가 정말로 값이 없음(None) 상태에 있는가이다.
파이썬이 공식적으로 권장하는 방식은 None은 하나의 고유한 객체라는 점이다. 의도는 그 객체 자체가 None인지 여부를 확인하는 데 집중하는 것이며, 단순 값의 등가성 비교가 아닌 객체의 동일성 판단이 필요하다. 이때 is 연산자는 객체 자체의 동일성을 확인하는 연산자로 적합하며, id를 통해 두 객체의 고유 식별값을 직접 비교하는 원리와도 맞닿아 있다.
id 비교의 내부 원리도 정리된다. 모든 객체는 고유한 식별값을 가진다. 객체가 생성되면 고유의 식별정보를 가지며, 그 식별정보는 객체의 생존 동안 변하지 않는다. id() 함수는 이러한 식별값을 정수로 반환하고, 서로 다른 두 객체는 서로 다른 id를 갖게 된다. is 연산자는 두 객체의 정체성(즉, id 값의 동일 여부)을 직접 비교하고, id()는 그 정체성을 숫자로 확인한다. 두 객체의 id가 같다면 같은 객체이며 True, 다르면 False가 된다. 예시로 이해하려면 관련 코드를 참고하면 된다.