在reference manual它指出:加載模塊和初始化模塊之間的區別?
一個完整的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的
看起來很奇怪,它沒有得到任何關注,因爲它被明確地鏈接在'import'的文檔中,[專門用於'module .__ spec__'](https://docs.python.org/3/ reference/import.html #__ spec__),它已經在最近更新了。 –
注意擴大每個問題的「初始化和加載模塊之間的區別」? AFAIK初始化的模塊已經執行了[語句執行](https://docs.python.org/3.6/tutorial/modules.html#more-on-modules),而加載的模塊只能在符號表中使用。 – Alex
@Alex:[import system reference](https://docs.python.org/3/reference/import.html#loading)將加載過程描述爲包含初始化,以「加載」和「初始化「是等同的。不過,我不希望完全一致的Python文檔,這些術語,特別是「加載」,應該在上下文中考慮,以確定文檔試圖說些什麼。例如,'sys.modules'包含了導入系統文檔使用該術語的意義上尚未完全加載的模塊。 – user2357112