비교연산자 : == 와 is
파이썬에서는 두 객체가 같은지를 비교하기 위해서 ==를 사용합니다.
is 의 경우 두 객체가 할당된 메모리가 같은지를 비교하기 때문에 ==와 동일한 의미로 사용될 수 없습니다.
(1) >a=1000, b=1000
a==b
True
a is b
False
id(a),id(b)
(139316566024176, 139316566023888)
why? a와 b는 같은 정수 1000으로 바인딩 되어있으나 서로 메모리를 할당받은 서로 다른 객체로 "=="의 값은 True 이나 "is"연산값은 False입니다.
(2) > a=256, b=256
a==b
True
a is b
True
id(a),id(b)
(139317836341456, 139317836341456)
파이썬은 정수 256까지에 대해서는 이미 해당 값이 존재하면 기존의 객체를 바인딩하게 합니다. 이는 동일 값을 메모리에 여러번 할당함으로써 발생하는 메모리 낭비를 줄이기 위함입니다.