[Python-Dev] A Horrible Inconsistency

Guido van Rossum guido at python.org
Thu May 25 23:23:56 CEST 2006


On 5/25/06, Raymond Hettinger <rhettinger at ewtllc.com> wrote:
> Fredrik Lundh wrote:
>
> > >>> -1 * (1, 2, 3)
> >()
> > >>> -(1, 2, 3)
> >Traceback (most recent call last):
> >   File "<stdin>", line 1, in <module>
> >TypeError: bad operand type for unary -
> >
> >We Really Need To Fix This!
> >
> >
>
> The second one doesn't bug me.  Unary minus on a sequence is meaningless.
>
> The first is a bit odd.  When using the * operator for sequence
> repetition, I don't expect it to have the same commutative property as
> multiplication.  IOW, "seq * n" makes sense but "n * seq" is a bit
> weird.  Also, I'm not clear on the rationale for transforming negative
> repetition counts to zero instead of raising an exception.  OTOH,
> neither of these has EVER been an issue for me or anyone I know.

It would be very strange if n*s didn't return the same thing as s*n.
In fact, I can't even decide which one feels more natural!

As to truncation of 0, that's debatable but can't be fixed until py3k
-- surely lots of code (perhaps accidentally) depends on it.

Still unclear which one \F wanted fixed...

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list