기록하는 습관

[Python] is 와 == 의 차이 본문

Python

[Python] is 와 == 의 차이

Avalla 2023. 8. 3. 15:25

Python의 is 연산자와 == 연산자의 차이

a = 1
b = 1
print( a == b )
print( a is b )
True
True
a = [256]
b = [256]
print( a[0] == b[0] )
print( a[0] is b[0] )
True
True
a = 257
b = 257
print( a == b )
print( a is b )
True
False

왜 위와 같은 차이가 나는걸까?

파이썬은 메모리와 실행 속도를 향상시키기 위해 -5부터 256까지의 정수 객체를 미리 생성하고 재사용한다.
따라서 이 범위 내의 정수는 메모리 상에서 같은 객체를 참조하게 된다.

a = -5
b = -5
print( a == b )
print( a is b )
True
True
a = -6
b = -6
print( a == b )
print( a is b )
True
False

따라서 객체의 동일성을 비교할 때 is 연산자를 사용하는 것이 항상 안전하지는 않을 수 있다.

'Python' 카테고리의 다른 글

[Python] 예외처리 : try ~ excpet 구문  (0) 2023.08.16