標籤:import 16px home color 匯入 port 文法 pre 失敗
在Python中,一個目錄被稱為一個package。import和from文法除了匯入module檔案之外,還可以匯入package,文法如下:
# import文法import dir1.dir2.mod#from文法from dir1.dir2.mod import x
上面的匯入語句中,.用來分割目錄和檔案名稱,上面匯入的目錄結構為dir1/dir2/mod.py。當然,也可以只匯入目錄:
import dir1import dir1.dir2from dir1 import dir2
搜尋
在以目錄的方式匯入的時,必須注意,在sys.path提供的路徑中,必須存在一個路徑,這個路徑拼接上匯入的路徑,是實際存在的。比如sys.path中存在一個路徑為:/home/username/python,那麼這個路徑拼接上dir1/dir2/mod.py,即/home/username/python/dir1/dir2/mod.py必須實際存在,否則匯入失敗。
__init__.py
要匯入一個package,除了要滿足上述的搜尋條件,還必須為匯入的每一個目錄,添加一個名為__init__.py的檔案,這個檔案可以是空的(實際使用中,大部分都是如此),也可以包含代碼,在首次匯入(並不是每次執行)這個目錄時,會執行__init__.py中的代碼。匯入的每一目錄,最終在Python中都實現成為一個module對象,而在__init__.py中賦值的變數和函數,都成為相應module對象的屬性,比如dir2中的__init__.py代碼如下:
X = 999def test(): print("dir2")
那麼匯入dir2之後,可以看到:
>>>dir2.X999>>>dir2.test()dir2
reload
和module檔案一樣,package目錄也支援reload:
reload(dir1)reload(dir1.dir2)
Python中package的匯入文法