Python에 대해 공부를 하고 있는데 값 비교를 할 때 is 가 아닌 == 을 사용해야 한다는 것을 배웠다.
왜,,근데 is 를 쓰면 안되는거지???
값 둘이 똑같은지 판별하는 친구들 아냐?
둘이 같은거 아냐??
값을 비교해보고 출력을 해보았다..
# is를 사용한 값 비교
a = -4
print(a is -4)
True
a = -6
a is -6
print(a is -6)
False
--------------------
# ==을 사용한 값 비교
a = -4
print(a == -4)
True
a = -6
a is -6
print(a == -6)
True
==을 사용했을 때는 내가 원하는대로 값이 True로 나왔다.
반면에,
is를 사용하였을 때는, 겉으로 보았을 때는 a 를 -5에서 -6으로 할당하였으니 당연히 a is -6 일때 True가 나올 것 같은데,,Flase가 나온다.
그 이유는,,,
==, !=는 값 자체를 비교
is, is not은 객체(object)를 비교
is를 사용하게 되면 변수 a가 있는 상태에서 다른 값을 할당하면 메모리의 주소가 달라질 수 있기 때문이다.
메모리 주소???? 그게 뭔데;;;
찾아보니

In Python, everything is an object, from variables to lists and dictionaries everything is treated as objects. In this article, we are going to get the memory address of an object in Python.
다음과 같이 알려준다.
즉, 변수 포함해서 모든 것들이 객체라는 것을 의미한다.
그래서 우리는 a 같은 변수에 값을 6 또는 -7 이런 식으로 넣어도 인터프리터 방식으로 해당 변수를
메모리에 특정 주소로 변환한 후, 주소값으로 비교를 하기 때문에 값이 다를 수 있다는 것이다.
그래서 결국 다른 객체가 되므로 값이 같더라도 is 로 비교하면 False가 나오는 것이다.
is 가 아닌 비교 연산자를 사용하는 것을 추천하는지 알게되었다.[참고]