반응형
파이썬에서 is를 사용할 때는 비교 대상이 같은 객체를 가리킬 때 True가 된다.
같은 객체를 가리킨다는 건 결국 두 객체는 같은 메모리 주소에 위치한다는 말이고,
그 말은 가령
a = [1,2,3]
b = a
로 할당을 했을 때,
b[0] = 4로 변경하면 a[0] = 4로 변경된다.
하지만 동일한 값을 갖는 객체라도 객체 자체가 다르다면..
가령 위의 a를
c = list(a) 로 새로운 리스트 객체를 만들어서 사용한다면 a와 c는 다른 주소에 저장될 것이기 때문에
a is c 가 false가 될 것이다.
하지만 == 는 내부의 값들을 비교해서 같으면 True를 반환하기 때문에
a == c가 된다.
아마도 코드 흐름에서 앞에서 객체를 만든 후 뒤에서 그 앞에서 만든 객체가 맞는지? 확인할 때 쓸 수 있을 것 같다.
그리고 주로 객체가 True, False, None 등과 비교할 때 쓴다.
a is True
a is False
a is None
반응형
'프로그래밍 > 파이썬' 카테고리의 다른 글
deque(collection) (0) | 2020.12.12 |
---|---|
Dictionary changed size during iteration(feat. defaultdict) (0) | 2020.12.05 |