[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