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 函式...