[Python-ideas] Retrying EAFP without DRY
Terry Reedy
tjreedy at udel.edu
Wed Jan 25 04:33:19 CET 2012
On 1/24/2012 7:52 PM, Mike Meyer wrote:
> For instance, I would write your example like so:
>
> try:
> walk_iter = os.walk(topdir)
> dirpath, files, subdirs = next(wi)
> # Special case the top level directory
> except StopIteration:
> raise RuntimeError("No dir entry for {!r}".format(topdir))
> # other exception handling here, as appropriate.
>
> for dirpath, files, subdirs in walk_iter:
> # Process the subdirectories
I would too, but ...
> Likewise, the try statement is very powerful. That break/continue may
> or may not be evil is immaterial. The point is to make the try
> statement more powerful.
I disagree with turning 'try' into a specialized loop construct by
adding a version of continue, which is a version of goto. We currently
have a general overt loop (while), the covert equivalent (tail
recursion), and a 'specialized' loop (for) that covers the majority of
loop needs, leaving the generalized loop (while) to cover everything else.
A 'try' statement in itself it a glorified label statement that also
sets up the context for exception statements. Exception statement are
conditional statements where the condition is an exception state. A
marked program position plus a conditional jump is what makes a loop.
--
Terry Jan Reedy
More information about the Python-ideas
mailing list