包(Package) 這個其實前面也說過的,不過同模塊一樣,沒有具體的解析 1.什麼是包 在創建許許多多模塊後,我們可能希望將某些功能相近的文件組織在同一文件夾下,那麼此文件夾(目錄)即為包,文件夾(目錄)名即為包名,但包有一個特征與其他普通文件夾區分,包目錄下必須有一個名為__init__.py的 ...
包(Package)
這個其實前面也說過的,不過同模塊一樣,沒有具體的解析
1.什麼是包
在創建許許多多模塊後,我們可能希望將某些功能相近的文件組織在同一文件夾下,那麼此文件夾(目錄)即為包,文件夾(目錄)名即為包名,但包有一個特征與其他普通文件夾區分,包目錄下必須有一個名為__init__.py的文件,__init__.py的內容可以為空,主要是為了避免python將文件夾名當作其他文件夾一樣的處理為普通的字元串。一般用來進行包的某些初始化工作或者設置__all__值,__all__是在from package-name import *這語句使用的,表示導入全部定義過的模塊。
2.有哪些包
查看包的命令和查看模塊的命令是一樣的,不再贅述
3.作用
用於將一組模塊歸類到同一個目錄中,整理某些功能相近的文件組織在一起,在實際的開發中,可能因為代碼的不斷增加,我們需要維護代碼的可利用和可原理性,需要將帶有不同功能的或者相同功能的模塊歸類在一起,這其實和模塊一個道理,模塊管理的是代碼,而包管理的是模塊
4.怎麼自定義包
1)手動建一個文件夾
2)在文件夾下建立__init__.py文件
3)再在同一文件夾下建立你自己的模塊
然後就可以導入使用了
5.怎麼使用包
使用包的方式跟模塊也類似,使用import導入包,或者from + import來導入包中的部分模塊。包目錄下為首的一個文件便是 __init__.py,假如子目錄中也有 __init__.py 那麼它就是這個包的子包了。
例:使用上面例子的已經建好的自定義包test里的方法:
使用from XX import XX 方法也一樣,註意導入包和導入模塊細微的區別就行,比如像這樣就會報錯:
使用from XX import XX時, 後面只能跟一個方法,不能跟模塊名.方法,必須這樣才行:
註意:導入操作時,預設只在父路徑下(即包的路徑)的模塊內搜索導入。
如果需要導入一個其他包的模塊,則需要先導入sys模塊,添加一個搜索路徑即可:
例:
其中,sys.path就是python預設的模塊搜索路徑,註意導入的包根目錄下必須帶有__init__.py文件
6.包和類,模塊的區別
- 類:類的概念在許多語言中出現,很容易理解。它將數據和操作進行封裝,以便將來的復用
- 模塊:在Python可理解為對應於一個py文件。在創建了一個py文件後,定義了某些函數和變數
- 包:包含有模塊和一個特殊的__init__.py文件的文件夾或者目錄
在某些特定情況下,可以把包看作一個模塊,把模塊看作一個包