On Jul 15, 2009, at 1:55 PM, Rodrigue wrote:

Basically, I was very surprised to discover that e() raises an
exception, but even more that e_raise() points to
if not MY_GLOBAL Is the problem not really when I assign?

My assumption is that some reordering is happening behind the scenes
that creates a situation similar to the += which assigns hence expects
to be at the local level.

The determination of whether a name is a reference to a local or global variable is made at compile time. When a function contains a single assignment (or augmented assignment) to a name, the compiler generates bytecode such that all references to that name within the function will be looked up in the local scope only, including those before the assignment statement.

-Miles

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to