PyChecker messages

Cameron Laird claird at lairds.us
Sun Jan 16 11:08:07 EST 2005


In article <lqbcb2-r9l.ln1 at home.rogerbinns.com>,
Roger Binns <rogerb at rogerbinns.com> wrote:
			.
			.
			.
>> runner.py:200: Function (detectMimeType) has too many returns (11)
>>
>> The function is simply a long "else-if" clause, branching out to different
>> return statements. What's wrong? It's simply a "probably ugly code" advice?
>
>That is also advice.  Generally you use a dict of functions, or some other
>structure to lookup what you want to do.
			.
			.
			.
This interests me.  Let's be more precise.

Use, it's absolutely true that good Python style exploits dicts
far more than newcomers realize (although somewhat less than Lua,
a language which intriguingly pushes dictionary pragmatics to the
limit).  In particular, it is frequently the case that beginners'
appetite for a "switch" is best met by a lesson in use of a 
dictionary of functions.

HOWEVER, proliferation of functions itself adds weight.  My own
counsel is that a simple sequence of

  if ...
    return ...
  if ...
    return ...

often is exactly the right definition for a specific function.
I, incidentally, prefer this form over the 

  if ...
    return ...
  elif ...
    return ...

the original poster described.

So:  yes, "[g]enerally you use a dict of functions" when PyChecker
thinks you have "too many returns", but I do NOT advise it for the
specific case that appears to be at hand.



More information about the Python-list mailing list