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

John Nagle nagle at animats.com
Sun Apr 22 15:43:36 EDT 2012


On 4/20/2012 9:34 PM, john.tantalo at gmail.com wrote:
> On Friday, April 20, 2012 12:34:46 PM UTC-7, Rotwang wrote:
>
>> I believe it says somewhere in the Python docs that it's undefined and
>> implementation-dependent whether two identical expressions have the same
>> identity when the result of each is immutable

    Bad design.  Where "is" is ill-defined, it should raise ValueError.

A worse example, one which is very implementation-dependent:

http://stackoverflow.com/questions/306313/python-is-operator-behaves-unexpectedly-with-integers

 >>> a = 256
 >>> b = 256
 >>> a is b
True           # this is an expected result
 >>> a = 257
 >>> b = 257
 >>> a is b
False

Operator "is" should be be an error between immutables
unless one is a built-in constant.  ("True" and "False"
should be made hard constants, like "None". You can't assign
to None, but you can assign to True, usually with
unwanted results.  It's not clear why True and False
weren't locked down when None was.)

				John Nagle




More information about the Python-list mailing list