restriction on sum: intentional bug?

Ethan Furman ethan at stoneleaf.us
Tue Oct 27 12:02:09 EDT 2009


Steve wrote:
> On Oct 17, 8:28 pm, Tim Chase <python.l... at tim.thechases.com> wrote:
> 
>>Christian Heimes wrote:
>>
>>>Alan G Isaac wrote:
>>>
>>>>On 10/16/2009 5:03 PM, Christian Heimes wrote:
>>>>
>>>>>It's not going to happen.
>>>>
>>>>That's a prediction, not a justification.
>>
>>>It's not a prediction, it's a statement. It's not going to happend
>>>because it violates Guido's gut feeling as well as the Zen of Python.
>>
>>I'm not sure how it violates ZoP...particularly
>>
>>Simple is better than complex.
>>   [complex is special casing or explaining why there's an error]
>>Special cases aren't special enough to break the rules.
>>   [raising an error is a special case]
>>Although practicality beats purity.
>>In the face of ambiguity, refuse the temptation to guess.
>>   [there's nothing ambiguous about sum() meaning "+"]
>>If the implementation is easy to explain, it may be a good idea.
>>   [sum(lst_of_strs) should do exactly what it says..."+" 'em]
>>
>>-tkc
> 
> 
> Sorry about the late reply.
> 
> You overlooked "There should be one-- and preferably only one --
> obvious way to do it.",  which in this case is join()

That doesn't mean *only* one obvious way to do it, and more importantly 
it *does not* mean *only one way* to do it.


> To me the current implementation is blatantly correct. sum is an
> operation on a list of numeric values, returning a numeric value -
> this is why we have the seemingly strange "".join() rather than [].join
> ("")
> 
> I think duck typing is wonderful so long as its specific applications
> make sense. 

Duck typing is about not guessing what will make sense, or what needs 
will arise, to the users of our code.


> We don't handle integers being passed to len() do we?
> Technically we could return the number of digits but it wouldn't make
> sense as len() works on iterables.

Ints do not have a __len__ method, so why should len() work on them? 
Strs, on the other hand, do have an __add__ method.

~Ethan~




More information about the Python-list mailing list