为什么在Python 3中的'sys.modules'中没有导入模块?

Chr*_*nds 10 python import python-import python-2.7 python-3.x

我正在阅读如何检查是否已导入python模块并且说明似乎很清楚,检查中的模块sys.modules.这正如我在Python 2中所期望的那样,但不适用于Python 3(3.5和3.6测试).例如:

Python 3.6

>>> import sys
>>> 'itertools' in sys.modules
True
Run Code Online (Sandbox Code Playgroud)

Python 2.7

>>> import sys
>>> 'itertools' in sys.modules
False
Run Code Online (Sandbox Code Playgroud)

我注意到,itertools在Python 3 sys.modules dict(<module 'itertools' (built-in)>)中被描述为"内置" ,而不是在Python 2中,所以也许这就是它在sys.modules导入之前的原因,但它没有作为内置列出.无论如何,既然itertools仍然需要在Python 3中导入,我将不胜感激.

use*_*ica 7

他们已经被导入,只是不是你.解释器启动的哪些部分导致模块加载是不重要的实现细节,但是如果需要,可以跟踪可能的路径.例如,itertools导入reprlib

from itertools import islice
Run Code Online (Sandbox Code Playgroud)

由functools以下人员导入:

from reprlib import recursive_repr
Run Code Online (Sandbox Code Playgroud)

由types以下人员导入:

import functools as _functools
Run Code Online (Sandbox Code Playgroud)

由importlib以下人员导入:

import types
Run Code Online (Sandbox Code Playgroud)

这是在解释器启动时引导的,因为它是大多数导入实现的地方.