가능한 중복 :
Python “is” operator behaves unexpectedly with integers왜 (0-6)은 -6 = 거짓입니까?
오늘은 내 프로젝트를 디버깅하기 위해 노력하고 분석하는 몇 시간 후에 나는이 도착했던 :
>>> (0-6) is -6
False
하지만,
을>>> (0-5) is -5
True
나에게 설명해 주시겠습니까? 그 이유는 무엇입니까? 이것은 일종의 버그 또는 매우 이상한 행동 일 수 있습니다. -5에서 포함 256
> Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2
>>> type(0-6)
<type 'int'>
>>> type(-6)
<type 'int'>
>>> type((0-6) is -6)
<type 'bool'>
>>>
그게 완전히 엉뚱한 – Wug
무엇이 당신을 처음에 'is'라고 사용하게 했습니까? 'is/is not None'을 제외하고 파이썬에서 자주 사용되어야하는 것은 아닙니다. –
@ Russel의 코멘트는 머리에 못을 박는 다. 문제는 누군가가 분명히 숫자를 비교하기 위해 "is"를 사용하고 있으며 그것이 잘못된 기대 인'='처럼 기능 할 것으로 예상한다는 것이다. – LarsH