python中package機制的兩種實現方式

2021-05-22 11:35:14 字數 2213 閱讀 6359

10.5pt;font-family:宋體;mso-ascii-font-family:verdana;mso-fareast-font-family:

宋體;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:verdana">當執行

import module

時,直譯器會根據下面的搜尋路徑,搜尋

module1.py

檔案。 1)

當前工作目錄

2) pythonpath

中的目錄

3) python

安裝目錄

(/usr/local/lib/python)

事實上,模組搜尋是在儲存在

sys.path

這個全域性變數中的目錄列表中進行搜尋。

sys.path

會在直譯器開始執行時被初始化成包含:

1)當前工作目錄

2) pythonpath

中的目錄

3) python

安裝目錄

(/usr/local/lib/python)

package

是模組的集合,每乙個

package

的根目錄下面都應當有乙個

__init__.py

檔案。當直譯器發現目錄下有這個檔案時,他就會認為這是乙個

package

,而不是乙個普通的目錄。

我們通過下面這樣的乙個例項來說明

假定專案結構如下:.py

mypackage

---classone.py

---classtwo.py

---__init__.py

font-family:"verdana","sans-serif"'>

現在我們通過兩種方式來實現包機制,主要區別就在於是否在

__init__.py

中寫入模組匯入語句。

內容如下:

from

mypackage.classone 

import

classone

from

mypackage.classtwo 

import

classtwo

if__name__=="

__main__":

c1 =

classone()

c1.printinfo()

c2 =

classtwo()

c2.printinfo()

class

classone:

def__init__

(self):

self.name ="

class one

"def

printinfo(self):

print("

i am class one!")

classtwo.py

內容如下:

class

classtwo:

def__init__

(self):

self.name ="

class two

"def

printinfo(self):

print("

i am class two!")

from

classone 

import

classone

from

classtwo 

import

classtwo

demo.py

內容如下:

import

mypackage

if__name__=="

__main__":

c1 =

mypackage.classone()

c1.printinfo()

c2 =

mypackage.classtwo()

c2.printinfo()

或者demo.py

也可以定義如下:

from

mypackage 

import*if

__name__=="

__main__":

c1 =

classone()

c1.printinfo()

c2 =

classtwo()

c2.printinfo()

python程式設計 package中 init

詳細解釋 總結 當 import 乙個 package 的時候,它會隱性的去執行此檔案,而在此檔案中定義的物件,會被繫結到當前的命名空間裡面來。在 python3.2 版本之前,定義的 package 下面一定要有此檔案,這樣 python 才知道它是乙個 package,才可以尋找到相關模組的路徑...

python中package注意事項

個人工作中的ssd cardreader camera audio模組文件組織形式如下 rcllib init pyrcllegacy.pymodulesagilentop.pyuvccam.pyuvccam.dll 注 rcllib存放於 c python27 lib site packages ...

python中package使用的幾個點子

1 乙個python的package資料夾中 init py 檔案是在引用該包時,首先執行的乙個檔案。正常情況下,我們沒有對它進行編輯時,預設為空。2 utils.py 檔案中儲存一些常見的公用的函式 方法。專案不同,裡面內容也不一定相同。在呼叫時,可直接用 from utils import 函式...