[Python-ideas] "While" suggestion
Ron Adam
rrr at ronadam.com
Wed Jul 9 16:49:36 CEST 2008
Terry Reedy wrote:
> Your specific example is so regular that it also could be written
> (better in my opinion) as a for loop by separating what varies from what
> does not:
>
> match_tok = (
> (re_comment, TOK_COMMENT),
> (re_indent, TOK_INDENT),
> ...
> (re_string, TOK_STRING),
> )
> # if <re_x> is actually re.compile(x), then tokens get bundled with
> # matchers as they are compiled. This strikes me as good.
>
> for matcher,tok in match_tok:
> m = matcher.match(s)
> if m:
> process(tok, m.group(1)
> break
> else:
> raise InvalidTokenError(s)
>
> Notice how nicely Python's rather unique for-else clause handles the
> default case.
>
> Terry Jan Reedy
This is the same solution I came up with. It separates the data from the
code in a way that is much easier to read and maintain.
Any time I see more than 3 elif's or else's, It's a hint for me to look for
a more generalized solution like this.
Ron
More information about the Python-ideas
mailing list