Consistency in Python

Brendon Towle btowle at carnegielearning.com
Fri Aug 25 11:19:53 EDT 2006


> Message: 3
> Date: Fri, 25 Aug 2006 15:28:46 +0200
> From: "Fredrik Lundh" <fredrik at pythonware.com>
> Subject: Re: Consistency in Python
>
> Brendon Towle wrote:
>
>> So, my question is: Someone obviously thought that it was wise and
>> proper to require the longer versions that I write above. Why?
>
> a) maybe they had a working carriage return key ?

Riiiiight. Now that we've got the "Frederik gets sarcastic with a  
relative Python newcomer" bit out of the way, is there an actual  
*answer* somewhere in the community?


> b) http://pyfaq.infogami.com/why-doesn-t-list-sort-return-the- 
> sorted-list
>    (this also explains how to handle your specific use case)

Well, I posted working code, so I thought it should have been obvious  
that I knew how to handle my use case, and was (am) looking for a  
language-design level answer as opposed to a working-code level  
answer. Besides, the article above (although useful *and* freshly  
modified) doesn't explain how to handle the use case I posted with  
append(), or the ones I didn't post with extend(), insert(), remove 
(), dict.update(), and a bunch of others I can't think of off the top  
of my head.


> c) in general, mutating *and* returning may be confusing; consider:
>
>     lst = [1, 2, 3]
>     for item in lst.reverse():
>         print item
>     ... some other code ...
>     for item in lst.reverse():
>         print item

I guess I have three responses to this. The first is that generations  
of Lisp programmers seem to have handled mutating *and* returning  
just fine for about the last 50 years; maybe it really isn't all that  
hard. ("Always know where your CONS cells are coming from." is pretty  
ingrained in my programming DNA; the Python analog isn't hard.)

My second response is that if "... some other code ..." is so long  
and involved that you've forgotten that you already reversed lst,  
then your function probably needs to be refactored and/or rewritten.

My third response is that it's *always* possible to shoot yourself in  
the foot. Protecting a naive user from one particular metatarsal  
projectile insertion at the expense of letting the power-user write  
more concise code seems a bad tradeoff to me -- but, I'm not involved  
with Python design, which brings me back to my original question  
above. Anyone?

B.

-- 
Brendon Towle, PhD
Cognitive Scientist
+1-412-690-2442x127
Carnegie Learning, Inc.
The Cognitive Tutor Company ®
Helping over 375,000 students in 1000 school districts succeed in math.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20060825/0a987a37/attachment.html>


More information about the Python-list mailing list