Message6636
# == 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).
|
|
Date |
User |
Action |
Args |
2007-08-23 13:56:30 | admin | link | issue463640 messages |
2007-08-23 13:56:30 | admin | create | |
|