On Tue, May 31, 2011 at 11:09 PM, Jacob Holm <jh@improva.dk> wrote:
 
> x = 1
> def f():
>     # The next statement uses the global x
>     x += 1
>     x = 2
>     # From here, you have a local x
>


 Specifically, the "x = 2" statement (and the lack of a nonlocal
statement) forces x to be local throughout the function, and the "x +=
1" statement then tries to read the local "x" and fails.


Yes, Jacob has got exactly what I was proposing. x += 1; x = 2 should continue to fail, since there would be a = statement in the function body in that case.

-- Carl