2014-12-05 110 views

回答

4

在Python 2.7中,importlib不是超級有用。事實上,它唯一的功能是import_module功能,使您能夠從一個字符串名稱導入模塊:

>>> import importlib 
>>> importlib.import_module('sys') 
<module 'sys' (built-in)> 
>>> importlib.import_module('sys').version 
'2.7.8 (default, Jul 2 2014, 19:50:44) [MSC v.1500 32 bit (Intel)]' 
>>> 

注意,你可以做同樣的與__import__內置,但使用import_module一般是優選。

但是,在Python 3.1及更高版本中,importlib的用途已被擴展。根據documentation

importlib包的目的是雙重的。一種是在Python源代碼中提供導入語句的實現(因此,擴展名 __import__()函數)。這提供了一個可以移植到任何Python解釋器的實現import。 這也提供了一個參考實現,它比用Python編程語言實現的實現更容易理解 。

二,實現導入的組件暴露在這個包中, 使用戶更容易創建他們自己的定製對象(通常稱爲 一般作爲導入程序)參與導入過程。 有關定製進口商的詳細信息,請登錄PEP 302

彙總,importlib現在可以訪問Python的進口語句的內部,建立自定義查找,裝載機,和進口商,進口設置掛鉤,等等。

實際上,從版本3.3開始,importlib包含import-statement本身的實現。你可以在Using importlib as the Implementation of Import下的Python 3.3的新增功能頁面閱讀這篇文章。

此外,importlib將取代與將來版本的Python中的導入相關的舊模塊。例如,舊版imp模塊在版本3.4中被棄用,轉而使用importlib

考慮到所有這些,我認爲可以肯定地說importlib在現代Python中非常重要。 ;)

+0

另請注意:從Python 3.3開始''import'語句本身是由'importlib'包實現的,而不是由非常複雜的C代碼實現的。 – 2014-12-05 02:42:27

0

它允許您在編碼時導入您不知道名稱的模塊。

例如,當我的應用程序啓動時,我瀏覽一個目錄結構並加載發現它們的模塊。