On Thu, 26 Apr 2012 11:31:39 -0700, John Nagle wrote:

>     I would suggest that "is" raise ValueError for the ambiguous cases.
> If both operands are immutable, "is" should raise ValueError. That's the
> case where the internal representation of immutables shows through.

This breaks one of the most common uses of "is", i.e. "x is None".

And it doesn't prevent a programmer from consfusing "is" and "==" with
mutable types.

>     If this breaks a program, it was broken anyway.  It will
> catch bad comparisons like
> 
>      if x is 1000 :
>       ...
> 
> which is implementation dependent.

The only way to completely eliminate bugs caused by the programmer relying
upon implementation-dependent behaviour is to eliminate implementation-
dependent behaviour altogether, which is throwing the baby out with the
bath water, IMHO.

All practical languages have some implementation-defined behaviour, often
far more problematic than Python's.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to