python import導包載入機制

2021-09-06 21:31:24 字數 793 閱讀 4227

**

python中所有載入到記憶體的模組都放在 sys.modules 。當 import 乙個模組時首先會在這個列表中查詢是否已經載入了此模組,如果載入了則只是將模組的名字加入到正在呼叫 import 的模組的 local 名字空間中。如果沒有載入則從 sys.path 目錄中按照模組名稱查詢模組檔案,模組可以是py、pyc、pyd,找到後將模組載入記憶體,並加到 sys.modules 中,並將名稱匯入到當前的 local 名字空間。

乙個模組不會重複載入。多個不同的模組都可以用 import 引入同乙個模組到自己的 local 名字空間,其實背後的 pymoduleobject 物件只有乙個。這裡說乙個容易忽略的問題:import 只能匯入模組,不能匯入模組中的物件(類、函式、變數等)。例如:模組 a(a.py)中有個函式 getname,另乙個模組不能通過 import a.getname 將 getname匯入到本模組,只能用 from a import getname。

from b import d

classc:

pass

檔案[ b.py ]

from a import c

classd:

pass

為什麼執行 a 的時候不能載入 d 呢?

如果將 a.py 改為:import b 就可以了。

這是怎麼回事呢?

具體到 from b import d,python 內部會分成幾個步驟:

所以這個例子的執行順序如下:

python import 自己的包

轉 在寫python時,有時候寫的乙個python檔案可能需要被其他python檔案所用,那麼可以用匯入包 import 的 方式 1.自己寫的包放到 importsys sys.path usr lib64 python34.zip usr lib64 python3.4 usr lib64 py...

python import 自己的包

在寫python時,有時候寫的乙個python檔案可能需要被其他python檔案所用,那麼可以用匯入包 import 的 方式 1.自己寫的包放到 import sys sys.path usr lib64 python34.zip usr lib64 python3.4 usr lib64 pyt...

idea導包都報錯 python 導包

python 導包 python語言的使用者對導包應該不會陌生,下面我們就一起看一下python中有哪些到爆方式 1 import 直接使用import進行導包是一種很常見的方式,每次可以匯入乙個或多個包,直接使用import導包相當於是匯入了這個模組的整體,這個模組包含的所有物件都可以呼叫,但是要...