Python interpreter bug
Christopher Subich
csubich.spam.block at spam.subich.block.com
Fri Oct 7 11:48:23 EDT 2005
alainpoint at yahoo.fr wrote:
> No doubt you're right but common sense dictates that membership testing
> would test identity not equality.
> This is one of the rare occasions where Python defeats my common sense
But object identity is almost always a fairly ill-defined concept.
Consider this (Python 2.2, 'cuz that's what I have right now):
Python 2.2.3 (#1, Nov 12 2004, 13:02:04)
[GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> al = "ab"
>>> alp = al+"c"
>>> alphabet = "abc"
>>> al
'ab'
>>> alp
'abc'
>>> alphabet
'abc'
>>> alp is alphabet
0
>>> alp == alphabet
1 # True on Py2.4
The only reliable thing that object identity tells you is "these two
foos occupy the same memory location." Even for identical, immutable
objects, this may not be true (see case above) -- some immutables do end
up occupying the same memory location (try i=1;j=2;k=j-1;i is k), but
this is by no means guraranteed, and indeed only happens sometimes
because of optimizations.
More information about the Python-list
mailing list