當執行import module時,解釋器會根據下面的搜尋路徑,搜尋module1.py檔案。
1) 目前工作目錄
2) PYTHONPATH中的目錄
3) Python安裝目錄 (/usr/local/lib/python)
事實上,子產品搜尋是在儲存在sys.path這個全局變量中的目錄清單中進行搜尋。
sys.path會在解釋器開始執行時被初始化成包含:
1)目前工作目錄
package是子產品的集合,每一個Package的根目錄下面都應當有一個__init__.py 檔案。當解釋器發現目錄下有這個檔案時,他就會認為這是一個Package,而不是一個普通的目錄。
我們通過下面這樣的一個執行個體來說明
假定項目結構如下:
demo.py
MyPackage
---classOne.py
---classTwo.py
---__init__.py
現在我們通過兩種方式來實作包機制,主要差別就在于是否在__init__.py中寫入子產品導入語句。
1,__init__.py是一個空白檔案的方式,
demo.py内容如下:
複制代碼
from MyPackage.classOne import classOne
from MyPackage.classTwo import classTwo
if __name__ == "__main__":
c1 = classOne()
c1.printInfo()
c2 = classTwo()
c2.printInfo()
複制代碼
classOne.py内容如下:
class classOne:
def __init__(self):
self.name = "class one"
def printInfo(self):
print("i am class One!")
classTwo.py内容如下:
class classTwo:
self.name = "class two"
print("i am class two!")
2,如果在__init__.py中寫入導入子產品的語句,則上述例子可以這樣來做。
其中__init__.py中内容如下:
from classOne import classOne
from classTwo import classTwo
demo.py内容如下:
import MyPackage
c1 = MyPackage.classOne()
c2 = MyPackage.classTwo()
或者demo.py也可以定義如下:
from MyPackage import *
本文轉自Phinecos(洞庭散人)部落格園部落格,原文連結:http://www.cnblogs.com/phinecos/archive/2010/05/07/1730027.html,如需轉載請自行聯系原作者