On Thu, Feb 23, 2012 at 2:38 PM, Buck Golemon <b...@yelp.com> wrote: > My proposal is still *slightly* superior in two ways: > > 1) It reduces the number of __add__ operations by one > 2) The second argument isn't strictly necessary, if you don't mind > that the 'null sum' will produce zero.
It produces the wrong result, though: >>> sum([3,4], base=12) 7 If I'm starting with 12 and summing 3 and 4, I expect to get 19. Ideally the second argument should be ignored only if it isn't passed in at all, and I don't know off-hand why the built-in sum doesn't do this. We really don't need to replace it, though. If you want a different sum behavior, just write your own. def sum(iterable, *args): return reduce(operator.add, iterable, *args) >>> sum([3,4]) 7 >>> sum([3,4], 12) 19 >>> sum(['hello', 'world']) 'helloworld' Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list