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