is 와 == 차이점

Calvin Park·2022년 7월 18일
0

파이썬의 비교 연산자 중 is 와 ===가 있다. 이 둘의 관계는 파이썬의 객체 구조와 관련이 깊다.

먼저 is는 id() 값을 비교하는 함수다. None은 Null로서 값 자체가 정의되어 있지 않으므로 ===로 비교가 불가능하다. 즉 None 또는 Null로 값이 있으면 == 으로 비교가 불가능!

if a is None:
	pass

==는 잘 알다시피 값을 비교할때 사용하는 연산자 이다. 리스트를 생성해서 비교해보면 == 와 is 의 차이에 대해서 금방 이해가 될것이다.

a = [1,2,3]
a==a
True

a == list(a)
True

a is a 
True

a is list(a)
False
-> 값은 동일하지만 list()로 한 번 더 묶어주면, 별도의 객체로 복사가 되고 다른 ID를 갖게 된다. 따라서 is 는 False가 된다.

a = [1,2,3]
a == copy.deepcopy(a)
True

a is copy.deepcopy(a)
False

copy.deepcopy()로 복사한 결과 또한 값은 같지만 ID는 다르기 떄문에, ==로 비교하면 True, is로 비교할 경우 False가 된다. 
profile
Personal Velog Note

0개의 댓글