Unexpected python exception

Richard Purdie rpurdie at rpsys.net
Wed Nov 11 05:59:46 EST 2009


I've been having problems with an unexpected exception from python which
I can summarise with the following testcase:

def A():
    import __builtin__
    import os

    __builtin__.os = os

def B():
    os.stat("/")
    import os

A()
B()

which results in:

Traceback (most recent call last):
  File "./test.py", line 12, in <module>
    B()
  File "./test.py", line 8, in B
    os.stat("/")
UnboundLocalError: local variable 'os' referenced before assignment

If I remove the "import os" from B(), it works as expected.

>From what I've seen, its very unusual to have something operate
"backwards" in scope in python. Can anyone explain why this happens?

Cheers,

Richard




More information about the Python-list mailing list