git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Loop with else clause


DL Neil <PythonList at DancesWithMice.info> writes:

> Possible solution:
> To make anything more than the trivial case readable, I think I'd put
> the list processing into one function, and the exception into another
> (except that this case is so trivial), ie
>
> 	if list:
> 		process_list() #the heading and for-loop, as above
> 	else:
> 		print( "Sorry...

(As an aside: It's best to avoid choosing names like ?list? that clobber
built-in names; your code examples are harder to read that way. I'll
assume a different name, ?ipsums?.)

One aspect of that example I would prefer to avoid: It scatters the
handling of the list to different locations in the code. It's not
obvious from the purpose of ?process_list? whether that function should
be handling an empty list; this could lead to double-handling in
different locations.

An alternative to consider::

    if ipsums:
        for item in ipsums:
            process_item(item)
    else:
        print("Sorry...")

An advantage of this is that the handling of the list is all in the same
place, where changing that logic later will be easier. The
?process_item? then just assumes some other code has decided which items
to handle; it becomes correspondingly simpler.

-- 
 \       ?Two possibilities exist: Either we are alone in the Universe |
  `\   or we are not. Both are equally terrifying.? ?Arthur C. Clarke, |
_o__)                                                             1999 |
Ben Finney