Разница между загруженным модулем и инициализированным модулем?

В справочном руководстве указано, что:

Полная программа Python выполняется в минимально инициализированной среде: все встроенные и стандартные модули доступны, но ни один не был инициализирован, кроме sys (различные системные сервисы), builtins (встроенные функции, исключения и нет) и __main__,

Я не уверен в том, что "инициализированный" должен означать здесь. Я всегда думал, что модуль был инициализирован, если он был загружен и присутствует в sys.modules:

Это словарь, который отображает имена модулей на модули, которые уже были загружены.

Видимо, я был неправ, потому что sys.modules содержит много других модулей:

python -c "import sys; print(sys.modules.keys() - {'sys', 'builtins', '__main__'})"
{'_stat', 'encodings.aliases', '_sitebuiltins', '_thread', 'io', '_weakrefset', 'genericpath', 'encodings.utf_8', 'codecs', 'os', '_weakref', '_codecs', '_frozen_importlib', '_io', '_frozen_importlib_external', 'os.path', '_warnings', '_bootlocale', '_signal', 'errno', '_imp', 'encodings.latin_1', 'sysconfig', 'marshal', 'encodings', 'usercustomize', 'site', 'posixpath', '_collections_abc', 'posix', '_sysconfigdata_m_linux_x86_64-linux-gnu', 'encodings.cp437', 'abc', 'zipimport', 'stat', '_locale'}

В чем разница между инициализированным и загруженным модулями? Я на Python 3.

2 ответа

Решение

Инициализация языка стала намного сложнее с тех пор, как была написана эта документация. (Это было в основном без изменений, по крайней мере, с Python 1.4.) Все эти модули в sys.modules полностью загружены и инициализированы.

Проще говоря:

import загружает модуль в память.

когда вы вызываете класс в модуле и используете .__init__() Функция такова, что некоторые атрибуты в классе, принадлежащем этому модулю, получают обновления, после чего этот модуль становится инициализированным модулем.

Обратите внимание, что при использовании модуля этот процесс происходит неявно.

TL; DR

import some_module загружает модуль,some_module.some_attribute/function инициализирует это.

Другие вопросы по тегам