MRAB wrote: > Marco wrote: >> Hi, >> >> There happened something that I do not understand. Actually I don't even >> know how it can be possible. >> >> 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" >> >> The module x is from me, and I am not aware of doing anything cruel >> there. What evil thing can be done in its sub module that can result in >> that strange thing? >> > You'd have to show us the module. Try to make the smallest module that > has the same effect.
$ cat x.py import sys globals().update(zip(*(range(110),)*2)) y = 42 print __name__ if __name__ == "__main__": a = b = 42 print len(dir()) from x import y as z try: print my_name except NameError, e: print 'unhandled NameError: "%s"' % e sys.exit() $ python x.py __main__ 119 x 117 unhandled NameError: "name 'my_name' is not defined" ;) -- http://mail.python.org/mailman/listinfo/python-list