Glenn Hutchings wrote:
On Fri, 08 May 2009 19:14:52 +0200, Marco wrote:

I import a module and then the name space of the importing module seems do be overwritten.

my_name = __name__
print my_name
print len(dir())
from x import y as z
print __name__
print len(dir())
print my_name

->
__main__
119
x
117
unhandled NameError "name 'my_name' is not defined"

Interesting.  Here's one possibility for the contents of module x.py:

import sys
del sys.modules['__main__'].my_name
y = 42

I can't think of any other way apart from grovelling through sys.modules.

OK, here's one way to see more detail:
    import sys
    my_name = __name__
    pre = set(sys.modules), set(dir())
    from x import y as z
    post = set(sys.modules), set(dir())
    print 'Modules added: %s, removed: %s' % (
               post[0] - pre[0], pre[0] - post[0])
    print 'Globals added: %s, removed: %s' % (
               post[1] - pre[1], pre[1] - post[1])

--Scott David Daniels
scott.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to