On Fri, Aug 8, 2014 at 8:56 PM, Ethan Furman <ethan@stoneleaf.us> wrote:
I don't use sum at all, or at least very rarely, and it still irritates me.

You are not alone.  When I see sum([a, b, c]), I think it is a + b + c, but in Python it is 0 + a + b + c.  If we had a "join" operator for strings that is different form + - then sure, I would not try to use sum to join strings, but we don't.  I have always thought that sum(x) is just a shorthand for reduce(operator.add, x), but again it is not so in Python.  While "sum should only be used for numbers,"  it turns out it is not a good choice for floats - use math.fsum.  While "strings are blocked because sum is slow," numpy arrays with millions of elements are not.  And try to explain to someone that sum(x) is bad on a numpy array, but abs(x) is fine.  Why have builtin sum at all if its use comes with so many caveats?