python first assignment of a global variable

Miles Kaufmann milesck at
Wed Jul 15 14:17:27 EDT 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 mailing list