본문 바로가기
프로그래밍/파이썬

is vs ==

by 망고데이 2020. 12. 12.
반응형

파이썬에서 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