a = 1000
b = 10**3
이렇게 하면 둘다 int형이고 값도 같은데
파이썬 원래 값 같으면 메모리 주소 똑같지않냐..
a is b 하면 False뜨네
근데 또
a = 2
b = 1*2
이렇게하고 a is b 하면 True뜸
대체 기준이뭐냐 ㅋㅋ..
a = 1000
b = 10**3
이렇게 하면 둘다 int형이고 값도 같은데
파이썬 원래 값 같으면 메모리 주소 똑같지않냐..
a is b 하면 False뜨네
근데 또
a = 2
b = 1*2
이렇게하고 a is b 하면 True뜸
대체 기준이뭐냐 ㅋㅋ..
-5부터 256까진 객체가 캐싱돼있고
그 참조를 가져다쓰는데 범위 벗어나면 다른 객체를 새로만듬
"파이썬" 당하셨군요
어떤 언어에서건 객체 비교할때 == 같은걸로 값 비교하지 말아라.. 그거 값을 비교할 수 있고 아닐 수도 있는 무시무시한것이여..
코딩조무사 // 아니 그딴 룰이 있었어? ...
오늘도 피해자가 속출
딴 생각 말고 정의대로 객체의 동일성 비교는 is로 하고 객체의 값 비교는 ==으로 하면 됨
NoneType 클래스의 싱글턴 객체 None에 대해서는 보통 is로 비교한다는 것만 따로 기억해두고(==로 해도 되기는 함.. 쓰임새는 마찬가지나나 늬앙스가 조금 다른 방법...)