why () is () and [] is [] work in other way?

John Nagle nagle at animats.com
Thu Apr 26 01:48:33 EDT 2012


On 4/25/2012 5:01 PM, Steven D'Aprano wrote:
> On Wed, 25 Apr 2012 13:49:24 -0700, Adam Skutt wrote:
>
>> Though, maybe it's better to use a different keyword than 'is' though,
>> due to the plain English
>> connotations of the term; I like 'sameobj' personally, for whatever
>> little it matters.  Really, I think taking away the 'is' operator
>> altogether is better, so the only way to test identity is:
>>      id(x) == id(y)
>
> Four reasons why that's a bad idea:
>
> 1) The "is" operator is fast, because it can be implemented directly by
> the interpreter as a simple pointer comparison (or equivalent).

    This assumes that everything is, internally, an object.  In CPython,
that's the case, because Python is a naive interpreter and everything,
including numbers, is "boxed".  That's not true of PyPy or Shed Skin.
So does "is" have to force the creation of a temporary boxed object?

    The concept of "object" vs. the implementation of objects is
one reason you don't necessarily want to expose the implementation.

				John Nagle



More information about the Python-list mailing list