(apologies to Larry - the GMail interface is still confusing and arbirary)
On 05/03/07, Larry Hastings
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.
I could be using a different definition of 'scope' than you, but:
try: raise Exception("foo") except Exception, e: pass print e foo
seems to suggest that except blocks don't set up a new scope to me.
with file('C:/foo.txt') as f: pass
print f
says the same thing about the with statement to me. So the variable defined with an if <expr> as <name>: statement outliving the end of the indented block would be absolutely no surprise according to the current semantics of other statements. --Sam