Armin Ronacher wrote:
if name_re.match(text, pos) as match:
Personally, I like it - [...] it seems to me that we are, in fact, establishing a general rule that:
<keyword> <expression> as <variable>:
...is a common syntactical pattern in Python, meaning 'do something special with expression, and then as a side effect, assign that expression to the named variable for this block."
I like it too. However: unlike "except x as e" and "with a as b", the indented blocks under if and else don't establish a new scope. So it begs the question: what is the lifetime of the variable created by "if x as y" here? If it magically goes away, even as you create new variables in the scope, that just seems a little too weird to me. If it outlives the nested block under the if, that's weird too.
(Personally I'd prefer it if the blocks under if and else *did* establish a new scope, but I know that's never going to change.)