python3: accessing the result of 'if'
Carl Banks
invalidemail at aerojockey.com
Sat Jan 8 21:06:23 EST 2005
Nick Coghlan wrote:
> I have a different suggestion for this.
>
> 'as' is used for renaming in import statements. 'as' will be used for
exception
> naming in Python 3k.
>
> So let's use it for expression naming in 'if' statements, too.
>
> if someregexp.match(s) as m:
> # blah using m
> elif someotherregexp.match(s) as m:
> # blah using m
What if the condition you wanted to test wasn't the same as the thing
you want to save? In other words, how would you convert this?
. where:
. m = something()
. if m > 20:
. do_something_with(m)
What you propose works for typical regexps idiom but not for the
slightly more general case. However, I could see why some people might
not like the where...if syntax I proposed; it's kind of choppy and not
exactly easy to follow at a first glance.
As a compromise, howabout:
. if m > 20 where m=something():
. do_something_with(m)
In this case, the m=something() is NOT an assignment statement, but
merely a syntax resembling it. The "where m=something()" is part of
the if-statement, not the if-expression. It causes m to be visisble in
the if-expression and the if-block.
It (or your suggestion) could work with a while-loop too.
. while line where line=f.readline():
. do_something_with(line)
The main problem here (as some would see it) is that you can't do
something this:
. if m > 20 where (def m(): a(); b()):
--
CARL BANKS
More information about the Python-list
mailing list