1. 程式人生 > >Python中package的導入語法

Python中package的導入語法

每一個 文件 family 包含 拼接 必須 存在 目錄 部分

在Python中,一個目錄被稱為一個package。import和from語法除了導入module文件之外,還可以導入package,語法如下:

# import語法
import dir1.dir2.mod

#from語法
from dir1.dir2.mod import x

上面的導入語句中,.用來分割目錄和文件名,上面導入的目錄結構為dir1/dir2/mod.py。當然,也可以只導入目錄:

import dir1

import dir1.dir2

from 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 = 999

def test():
    print("dir2")

那麽導入dir2之後,可以看到:

>>>dir2.X
999

>>>dir2.test()
dir2

reload

和module文件一樣,package目錄也支持reload:

reload(dir1)

reload(dir1.dir2)

Python中package的導入語法