Importlib模組與__import__詳解
阿新 • • 發佈:2019-01-05
Importlib模組與__import__都可以通過過字串來匯入另外一個模組,但在用法上和本質上都有很大的不同。
以一個例子為證:
以下為我的工程目錄結構:
lib/test.py:
name = "Jack" def getName(): print(name) return name
demo.py:
name = "Amy" def getName(): print(name) return name
Importlib模組的例子:
testImportlib.py:
import importlib mName = "lib.test" module = importlib.import_module(mName) module.getName()
Importlib是python的一個庫,通過匯入importlib,呼叫import_module()方法,傳入使用者想要獲取的模組對應的路徑字串,即可獲取一個,模組module,module可以呼叫這個test模組下的所有屬性和方法。
執行截圖:
__import__的例子:
__import__是python的一個內建方法,直接呼叫__import__()即可獲取一個模組.
testImport.py:
mName = "demo" module = __import__(mName) module.getName()
此時呼叫的是相同目錄下的demo模組,可順利地獲取這個模組,那麼當不再同一個目錄下呢?
修改testImport.py:
mName = "lib.test" module = __import__(mName) module.getName()
此時的執行結果為:
出錯提示為,當前的模組'lib'沒有getName()這個方法,因此沒有正確獲取到test模組。
繼續修改此檔案:
mName = "lib.test" module = __import__(mName,fromlist = ('test',)) module.getName()
執行結果為:
當加上fromlist屬性即可正確獲取。