[Python-Dev] Peculiar import code in pickle.py

Alexander Belopolsky alexander.belopolsky at gmail.com
Tue Jul 13 17:25:23 CEST 2010


When pickle.py needs to import a module by name, it goes through a
peculiar dance of

            __import__(module, level=0)
            mod = sys.modules[module]

As far as I can tell, unless builtins.__import__ is overridden or
sys.modules clobbered by user code, the above should be equivalent to

            mod = __import__(module, level=0)

Note that the optimized _pickle implementation does not do the
sys.modules lookup and simply uses the module returned by
__import__(..).  This code goes back to 1999, so there was probably a
good reason back then to write it this way.   Presently, however, it
seems to be just another obscure difference between C and Python
implementation of pickle.


More information about the Python-Dev mailing list