python assignment

Grant Edwards grante at visi.com
Wed Jul 23 16:14:14 CEST 2003


In article <3F1E964E.BFD7513F at engcorp.com>, Peter Hansen wrote:
> Grant Edwards wrote:
>
>>> The examples you gave showed that integers share identity with
>>> other integers of the same value, while floats do not.
>> 
>> I believe that's only true for small integers, isn't it?
> 
> Google finds "LOADI - a fast load instruction for small positive integers 
> (those referenced by the small_ints array in intobject.c)" and checking
> that file is left as an exercise to the reader.  I'm going to blindly
> assume this is directly related to the issue in question... ;-)

I think so.  As others have pointed out, it's an implementation
detail, and the language definition doesn't require
equal-valued integer objects to share identity (nor is it
prohibited). Programs that rely on that behavior are broken.

Python 2.2.2 (#1, Jan 30 2003, 21:26:22) 
[GCC 2.96 20000731 (Red Hat Linux 7.3 2.96-112)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> a=2
>>> b=2
>>> print id(a), id(b)
135297000 135297000
>>> a=123456789
>>> b=123456789
>>> print id(a), id(b)
135449020 135449032

-- 
Grant Edwards                   grante             Yow!  I invented skydiving
                                  at               in 1989!
                               visi.com            




More information about the Python-list mailing list