On Nov 11, 6:59 pm, Richard Purdie <rpur...@rpsys.net> wrote: > 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
One word, Python treat objects in a function or method-scope as locals. So os is not defined in B(), is it right? -- http://mail.python.org/mailman/listinfo/python-list