nested scopes clarification

Erik Price eprice at ptc.com
Mon Feb 24 17:49:13 EST 2003


Hi,

I'm reading "Python Essential Reference 2nd ed" by David Beazley, and 
have encountered the topic of Python's nested scopes in functions, and 
the lack thereof in Python 2.0 or earlier.  I was hoping someone could 
clarify this for me.

The book gives this example:

def bar():
   x = 10
   def spam():
     print 'x is ', x
   while x > 0:
     spam()
     x -= 1

Beazley writes:  "In this case, when the nested function spam() 
executes, its global namespace is the same as the global namespace for 
bar(), the module in which functions is defined.  As a result, spam() is 
unable to resolve any symbols in the namespace of bar() and fails with 
NameError."

Is that another way of saying that Python puts all of its function 
declarations into the same scope in pre-2.1 Pythons?



Thanks,

Erik






More information about the Python-list mailing list