Python "is" behavior

Lie Lie.1296 at gmail.com
Sat Jun 21 10:17:46 CEST 2008


On Jun 21, 2:14 am, Gary Herron <gher... at islandtraining.com> wrote:
> michalis.avr... at gmail.com wrote:
> > On Jun 20, 9:38 am, Jean-Paul Calderone <exar... at divmod.com> wrote:
>
> >> On Fri, 20 Jun 2008 09:31:57 -0700 (PDT), michalis.avr... at gmail.com wrote:
>
> >>> I am not certain why this is the case, but...
>
> >>>>>> a = 256
> >>>>>> b = 256
> >>>>>> a is b
>
> >>> True
>
> >>>>>> a = 257
> >>>>>> b = 257
> >>>>>> a is b
>
> >>> False
>
> >>> Can anyone explain this further? Why does it happen? 8-bit integer
> >>> differences?
>
> >>http://mail.python.org/pipermail/python-list/2001-November/113994.html
>
> >> Jean-Paul
>
> > Thank you for this Jean-Paul. I did know about the identity of
> > objects, but my curiosity is based on the 256 number. Are the 2^8
> > integers cached due to the internal loops, or is there any other
> > specific reason? Is this something that can be controlled?
>
> Python provides no way to change that number, but of course you can
> always fiddle with the source code and recompile.   The actual value is
> a trade off (like any caching scheme) of cache-space versus efficiency
> gains.   The value has changed at least once in recent versions of Python.

And if your code breaks because of this, don't whine, 'cause you've
already been warned not to rely on it. Exactly the same arguments with
other people that is/going to whine because they break the
encapsulation.



More information about the Python-list mailing list