En Sun, 18 Oct 2009 21:50:55 -0300, Carl Banks <pavlovevide...@gmail.com> escribió:

Consider this thought experiment:


class Something(object):
    def __radd__(self,other):
        return other + "q"

x = ["a","b","c",Something()]


If x were passed to "".join(), it would throw an exception; but if
passed to a sum() without any special casing, it would successfully
return "abcq".

Thus there is divergence in the two behaviors, thus transparently
calling "".join() to perform the summation is a Bad Thing Indeed, a
much worse special-case behavior than throwing an exception.

Just for completeness, and in case anyone would like to try this O(n²) process, sum(x) may be rewritten as:

x = ["a","b","c",Something()]
print reduce(operator.add, x)

which does exactly the same thing, with the same quadratic behavior as sum(), but prints "abcq" as expected.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to