[Python-ideas] Why does `sum` use a default for the `start` parameter?
janssen at parc.com
Sat Dec 5 19:40:21 CET 2009
George Sakkis <george.sakkis at gmail.com> wrote:
> 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.
Or perhaps, the *default* start value should not be used if it doesn't
match in type the first element of a non-empty sequence. An explicitly
specified start value should still be used even if the sequence is *not*
More information about the Python-ideas