비교 연산자와 is 연산자

떵떵·2022년 4월 14일
0

출처 - wikidocs 레벨업 파이썬

비교 연산자

파이썬에서 두 값을 비교할 때 == 연산자를 사용한다. 이는 값이 같은지를 비교하고 만약 두 객체가 동일한 주소에 할당된 객체임을 비교하려면 is 연산자를 사용하면 된다

값 비교: ==
객체 주소 비교: is

a = 1000
b = 1000
id(a)
>>> 2074833836240
id(b) 
>>> 2074833839984

print(a == b)
>>> True

print(a is b)
>>> False

위 코드에서 a와 b는 같은 값 1000을 바인딩 한다. 하지만 1000이라는 정수 객체는 서로의 메모리 위치에 할당된 서로 다른 객체이다. 따라서 == 연산자의 결과는 True 이지만 is 연산자의 결과는 False 이다.

하지만 밑의 경우에는 다르다. 이번엔 좀 더 작은 정수 값을 바인딩 해보겠다.

a = 77
b = 77
id(a)
>>> 2074832800368
id(b)
>>> 2074832800368

print(a == b)
>>> True

print(a is b)
>>> True

이번엔 두 변수 a,b가 같은 주소를 나타내며 ==, is 연산자 모두 True 값을 반환하는 것을 알 수 있다.

이는 파이썬에서 정수 256까지에 대해서는 이미 해당 값이 존재하면 기존의 객체를 바인딩하기 때문이다. 동일 값을 메모리에 할당함으로써 발생하는 메모리 낭비를 줄이기 위함이다.

0개의 댓글