[Python-ideas] Why does `sum` use a default for the `start` parameter?

George Sakkis george.sakkis at gmail.com
Sat Dec 5 19:23:35 CET 2009


On Sat, Dec 5, 2009 at 8:10 PM, Stephen J. Turnbull <stephen at xemacs.org> wrote:

> George Sakkis writes:
>  > On Sat, Dec 5, 2009 at 6:45 PM, Andre Engels <andreengels at gmail.com> wrote:
>
>  > > In your proposed implementation, sum([]) would be undefined.
>  >
>  > Which would make it consistent with min/max.
>
> There's no justification for trying to make 'min' and 'sum'
> consistent.  The sum of an empty list of numbers is a well-defined
> *number*, namely 0, but the max of an empty list of numbers is a
> well-defined *non-number*, namely "minus infinity".
>
> The real question is "what harm is done by preferring the
> (well-defined) sum of an empty list of numbers over the (well-defined)
> empty sums of lists and/or strings?"  Then, if there is any harm, "can
> the situation be improved by having no useful default for empty lists
> of any type?"  Finally, "is it worth breaking existing code to ensure
> equal treatment of different types?"
>
> My guess is that the answers are "very little", "hardly at all", and
> "emphatically no."<wink>

Agreed that there is little harm in preferring numbers over other
types when it comes to empty sequences, but the more important
question is "should the start argument be used even if the sequence is
*not* empty?". The OP doesn't think so and I agree.

George



More information about the Python-ideas mailing list