[Python-Dev] Rationale for sum()'s design?
Guido van Rossum
gvanrossum at gmail.com
Mon Mar 14 03:39:33 CET 2005
[Guido van Rossum]
> > - the identity (defaulting to 0) if the sequence is empty
> > - the first and only element if the sequence only has one element
> > - (...(((A + B) + C) + D) + ...) if the sequence has more than one element
> While this might be reasonable if the identity
> argument is not specified, I think that if an
> identity is specified, it should be used even
> if the sequence is non-empty. The reason being
> that the user might be relying on that to get
> the semantics he wants.
> Think of the second argument as "accumulator
> object" rather than "identity".
But I think the logical consequence of your approach would be that
sum() should raise an exception rather than return 0, which would be
backwards incompatible. Because if the identity element has a default
value, the default value should be used exactly as if it were
Unfortunately my proposal is also backwards incompatible, since
currently sum([1,1], 40) equals 42.
I guess nobody remembers why we did it the way it is?
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev