第10 6節 Python包的概念

2021-09-26 01:27:16 字數 1244 閱讀 9535

一、 引言

在《第10.2節 python的模組及模組匯入》介紹了模組的概念及匯入的幾個關鍵點,python中的模組是乙個單個的py檔案,當我們開發的專案或功能集由多個檔案構成時,我們需要將這些檔案打包,這樣在外部引用時這些功能集的功能時,這些檔案作為乙個整體來進行管理。

二、 概念

在python中,乙個包可以說是乙個帶特定資訊的目錄結構:

1、 乙個包對應乙個目錄,包名和目錄名保持一致;

2、 包對應目錄下必須有乙個__init__.py檔案,該檔案用來標記該目錄為包;

3、__init__.py檔案可以為空,也可以是乙個有效的python檔案,載入包時實際上就是執行__init__.py檔案;

4、 要將模組加入包中,只需將模組檔案放在包目錄中即可,乙個包目錄可以存放多個模組檔案;

5、 包的組織結構中還可以套包,即包可以巢狀,也就是包目錄下還可以有子包目錄;

6、 從邏輯上看,包的本質是模組的集合,是多個模組依靠目錄結構組織在一起形成功能集合對外提供能力輸出;

7、 匯入包的本質就是載入井執行該包下的__init__.py檔案,然後將整個檔案內容賦值給與包同名的變數,該變數的型別是 module;

8、 與模組類似,包被匯入後會在包目錄下生成乙個__pycache__子目錄,並在該目錄內為包生成乙個__init__.cpython-37.pyc檔案。

三、init.py檔案的使用

python對於定義目錄為包的__init__.py檔案沒有強制要求,只要是乙個符合python**原始檔的檔案即可,甚至是乙個空檔案也可以;

包的主要作用是組織多個模組或子包提供功能集,而匯入包就相當於匯入該包下的__init__.py檔案,因此實際使用時是將包的__init__.py 檔案的用於匯入該包內包含的模組,而不是用來定義程式單元;

通過匯入包時自動匯入包內模組,可把模組中的成員匯入變成包內成員這樣通過匯入包就完成了包內模組的匯入,對於呼叫者來說,只要完成包匯入就可以了,不用關注包內的每個模組,通過包就可以訪問包內每個模組或子包提供的功能,以後使用起來會更加方便;

當然也可以匯入包時不自動匯入包內所有模組,而讓呼叫方自行匯入包內的模組,這樣呼叫方僅需匯入包內呼叫方需要使用的模組,可以節省系統開銷。

本節老猿介紹了python中包的概念,可以看到python包是一種非常靈活的功能集模組檔案管理機制,在開發者需要對外提供能力集合時使用非常方便。

第10 7節 Python包和子包的定義步驟

一 包的定義步驟 按照包名建立或使用乙個已有目錄,目錄名就是包名,必須注意包的目錄必須位於python載入模組的搜尋路徑中 具體請參考 第10.1節 python的模組及模組匯入 關於模組匯入的注意事項 在該目錄內新增乙個 init py 檔案 往包內新增模組檔案或子包 編輯 init py檔案,用...

python包的概念

python的包就是乙個資料夾 這個資料夾與普通資料夾的區別在於他必須包含乙個 init py的檔案 這個檔案可以包含 也可以沒有內容 只是用於標識乙個包 這個檔案本身是乙個模組 這個模組的名字是資料夾的名字 而不是 包名.init 而是包的名字 即這個資料夾的名字 命名空間 import只能匯入模...

python包的概念

1 python程式由包 package 模組 module 和函式組成。包是由一系列模組組成的集合。模組是處理某一類問題的函式和類的集合。2 包就是乙個完成特定任務的工具箱。3 包必須含有乙個 init py檔案,它用於標識當前資料夾是乙個包。4 python的程式是由乙個個模組組成的。模組把一組...