python first assignment of a global variable
milesck at umich.edu
Wed Jul 15 20:17:27 CEST 2009
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.
More information about the Python-list