개발 모음집/Python

[Python] is 와 ==의 차이점

wonos 2019. 5. 30. 21:47
  • is는 reference equality. 메모리 상의 두 object를 비교한다.(object 비교)
  • 두 reference가 같은 object를 가리키는지 확인할 수 있다. (값 비교)
  • **==**는 value equality을 비교한다. 두 object가 같은 값을 가지는지 알 수 있다.

예시를 보자.

foo = 10
dir(foo) == dir(10)
# True
dir(foo) is dir(10)
# False
  • 파이썬에는 -5부터 256까지의 수가 캐싱되어 있어 이들 값을 가진 변수들은 같은 object로 간주된다는 것이다.
a = 256
b = 256
a == b
# True
a is b
# True

a = 257
b = 257

a == b
# True

a is b
# False