Eko palypse wrote: > exec('import test01', globals()) > print('f3 out', x) > > # result exception, expected but because f1 didn't throw an exception > # I'm confused. module test01 has only this two lines > x += 1 > print('f3 in:', x)
The lines above run in the test01's global namespace, not in the global namespace of the importing module. > exec('import test01', globals()) Think of import as a function like exec("test01 = load_module('test01')", globals()) Then it should be clear that the name 'test01' is put into globals(), if load_module() doesn't throw an exception. No sharing or nesting of namespaces takes place. -- https://mail.python.org/mailman/listinfo/python-list