This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author nobody
Recipients
Date 2001-09-21.18:26:45
SpamBayes Score
Marked as misclassified
Message-id
In-reply-to
Content
# == module f.py
y = 10

def g():

  if y:
    y = 100

  return y

# == module h.py

import f
print f.g()

# == plop these two modules into the same directory
and 'cd' to that directory.

When you run 'python h.py' at the command line, line 6 
of f.py (if y:)
creates a problem due to f being supposedly undefined. 
The error is
registered as NameError or UnboundLocalError depending 
on what version 
of the python core you're running.   Python 2.1.x says 
y is being 
referenced before assignment, yet if you change the 
_next_ line to read
"z = 100" rather than "y = 100", the whole thing runs 
fine, printing 10
(the value of f.y) at the end as expected.

This is at the very least an extreme logic quirk in 
how python namespaces
work, and at worst a bug badly in need of correction 
(since vsn 1.5.2 or
before).
History
Date User Action Args
2007-08-23 13:56:30adminlinkissue463640 messages
2007-08-23 13:56:30admincreate