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