這裡所講不是用import名令,而是講用__import__函數。
如果我們有一個testa.py文件,我們可以用module=__import__('testa')來導入它。這樣可以用module.屬性來使用testa.py中的屬性。如果我們有一個包,如:
在當前子目錄下有一個名為:modules的目錄,其中有__init__.py,testa.py兩個文件。
因為在modules目錄下有__init__.py文件,所以目錄modules可以視為一個包,即將整個目錄作為一個模塊(象Java一樣)。如果想導入testa.py,則可以使用import modules.testa.py
但如果使用__import__函數,情況有變化(可以參考文檔中關於__import__的說明)。大概就是:使用__import__導入包形式的模塊,如module=__import__('modules.testa'),此時返回的不是testa模塊的對象,而是包的對象,所以想導入 testa可以使用文檔中的方法:
def my_import(name):
mod = __import__(name)
components = name.split('.')
for comp in components[1:]:
mod = getattr(mod, comp)
return mod
(我只試驗了一層,多層的並未測試,有興趣的可以把結果告訴我)