(Python) is와 == 의 차이점
a is b
is는 메모리 주소를 비교하는 연산자이다. 아래의 코드를 보면 a와 b 둘다 동일한 값이 할당되었지만 실제 비교가 되는 값은 100이 아니라 100을 담고 있는 주소의 값이 비교된다. 이때 a와 b는 다른 메모리주소를 가지고 있기 때문에 두개의 주소값은 동일하지 않다
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # False
a == b
==는 두개의 값만을 비교하는 연산자이다. 아래의 코드를 보면 할당된 값은 동일하기 때문에 True가 나온다
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True
is는 == 에 비해 약간 빠르다
== 는 메모리 주소를 불러온 뒤 그 메모리에 저장되어 있는 값을 비교하고 is는 메모리 주소만을 비교하기 때문이다. 즉
==는 한 depth더 비교하기 때문에 연산이 살짝 느린것을 알 수 있다
변수
특정 메모리 주소를 담아서 메모리 주소에 붙이는 라벨과 같다
파이썬에서는 변수는 값이 아닌 메모리 주소를 담고 있다