exec and globals and locals ...

Peter Otten __peter__ at web.de
Thu Sep 19 02:47:43 EDT 2019


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.


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /