1. 程式人生 > >Importlib模組與__import__詳解

Importlib模組與__import__詳解

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屬性即可正確獲取。