I was just reading about the 'unexpected result of is operator' which happens because Python cache numbers between -5 and 256.
This was discussed here: "is" operator behaves unexpectedly with integers
and here: "is" and "id" in Python 3.5
When I run one of the examples given there, I get different results between Python Idle and Python IDE (I'm using Jetbrains Pycharm professional edition - 5.0.4).
When using Python IDLE this is the result:
a = 1000
b = 1000
print (a is b) # prints False
when using Pycharm 5.0.4 this is the result:
a = 1000
b = 1000
print (a is b) # prints True
how could this be? I've rechecked, and my project's Python-Interpreter is exactly the same in both cases (both are Python 3.5.1). Not sure if this is something I've done wrong, and I was hoping if someone could explain this.
Edit:
I know 'a' is 'b' == true iff id(a) == id(b), and that you can check it like some of you mentioned in the comments. Perhaps I should have been more clear, what I don't understand is how could it be that an IDE has different behavior? I thought (and please, correct me, as it seems I'm wrong) that an IDE is just a user-friendly environment that uses external compilers / interpreters, and this is why these are independent of those IDE's (for instance, pycharm supports not only Python, and I could run Eclipse with C compiler, or Java etc. (all of which are not parts of the IDE).
Thanks, Alon.
a = 1000; b = 100 + 900
or other operations that result in the integer 1000. That way the should not get optimized to reference the same object, I assume. – Aggrieve