is there any principle when writing python function
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Tue Aug 23 21:44:14 EDT 2011
Terry Reedy wrote:
> On 8/23/2011 11:22 AM, Steven D'Aprano wrote:
>
>> Even 7±2 is probably excessive: I find that I'm most comfortable with
>> functions that perform 4±1 chunks of work. An example from one of my
>> classes:
>>
>> def find(self, prefix):
>> """Find the item that matches prefix."""
>> prefix = prefix.lower() # Chunk #1
>> menu = self._cleaned_menu # Chunk #2
>> for i,s in enumerate(menu, 1): # Chunk #3
>> if s.lower().startswith(prefix):
>> return i
>> return None # Chunk #4
>>
>> So that's three one-line chunks and one three-line chunk.
>
> In terms of different functions performed (see my previous post), I see
> attribute lookup
> assignment
> enumerate
> sequence unpacking
> for-looping
> if-conditioning
> lower
> startswith
> return
> That is 9, which is enough.
I think we have broad agreement, but we're counting different things.
Analogy: you're counting atoms, I'm grouping atoms into molecules and
counting them.
It's a little like phone numbers: it's not an accident that we normally
group phone numbers into groups of 2-4 digits:
011 23 4567 8901
In general, people can more easily memorise four chunks of four digits (give
or take) than one chunk of 13 digits: 0112345678901.
--
Steven
More information about the Python-list
mailing list