文章目錄
- 模塊
- Python模塊
- 匯入模塊
- 查找模塊
- 模塊編譯
- 包
- Python包
- 包的匯入
- 內嵌包
在使用Python開發程式時,如果是比較復雜的功能,可以把功能分成幾個部分,則需要用到Python的模塊和包,

模塊
顧名思義,模塊就是一塊一塊的代碼,
Python模塊
在Python中一個py檔案被認為是一個模塊(module),

匯入模塊
匯入一個模塊到當前模塊,語法:
import_smt ::= "import" module ["as" name] ("," module ["as" name])*
| "from" relative_module "import" identifier ["as" name]
("," identifier ["as" name])*
|"from" relative_module "import" "(" identifier ["as" name]
("," identifier ["as" name])* ["," "]"
|"from" module "import" "*"
- import_stmt表示
import陳述句 - 雙引號""標明的是關鍵字
- 方括號[]表示可選輸入
- 豎線|表示或者
- 小括號()和星號*合在一起使用,表示可以為若干小括號里的內容
綜上所述,import陳述句有4種寫法,
"import" module["as" name](","module["as"name])*
直接在import后面加模塊名字,并且名字可以使用關鍵字as自定義,


"from" relative_module "import" identifier["as" name] ("," identifier["as" name])
增加了from關鍵字

"from" relative_module "import" "("identifier ["as“ name](","identifier["as" name])*[","]")"
類似法二,只是在import后加上括號,對匯入部分用原則進行特別說明,

"from" module "import" "*"
將一個模塊下的所有成員都匯入到當前模塊,

查找模塊
當import一個模塊時,Python要去哪里查找模塊檔案呢?
Python查找模塊有3步:
- 在當前目錄種查找
- 若沒有找到則從環境變數PYTHONPATH中查找
- 若仍沒找到則到安裝目錄中查找
實際上要將查找目錄的資訊存放到sys模塊的path變數中,可以列印改變了來查看Python的查找目錄,

從查找順序上看出,當前目錄是第一優先查找,所以盡量不要使用標準庫中已存在的名字,避免Python使用該檔案取代標準庫的模塊,
模塊編譯
Python執行程式實際上有一個些許你機制,當運行Pyhton模塊檔案時,Python會將后綴名為.py的模塊檔案編譯成后綴名.pyc檔案,實際解釋執行編譯之后的.pyc檔案,類似Java,以此提高裝載速度,
除了編譯成.pyc位元組碼檔案外,向Python解釋器傳遞兩個-O引數(-OO)會生成優化的位元組碼.pyo檔案,pyo檔案比pyc檔案裝載速度更快,可以提高Python腳本啟動速度,不過需注意的是,壓縮的pyo檔案洗掉了py檔案里用來存放注釋的__doc__屬性,所以用到__doc__屬性則不能使用該優化方法,
包
程式代碼太多可以分成多個模塊,而當模塊太多可以組合成一個包,
(
插播反爬資訊)博主CSDN地址:https://wzlodq.blog.csdn.net/
Python包
模塊是一個Python檔案,包是一組模塊的集合,即包是放著若干Python檔案的目錄,并且該目錄下有一個__init__.py檔案(包的初始化檔案),可以在該檔案里匯入包里的所有Python模塊,
- 創建包


- 添加模塊


- 呼叫包

包的匯入
包的匯入和模塊的匯入語法規則一樣,例如:

但是和模塊匯入不同是第4種帶星號的用法,
from mypackage import *理想情況下會找出包的所有子模塊并匯入,但實際情況并非如此,Python會在初始化檔案里按照一個名為__all__的串列,匯入該串列給出的模塊名,
比如定義__all__串列:


__all__可以看作是包的索引,在撰寫Python時,建議在__init__.py檔案明確定義_-all__串列,
內嵌包
對于功能更復雜的程式,可以用內嵌包,即一個大包套著若干子包,每個子包又包含若干模塊,
比如Python處理XML的標準庫就包含了四個子包:

對于內嵌包的使用,另外注意的是在裝載模塊時要使用包和模塊的全名,即指出是哪個包的模塊,如:

Python系列博客持續更新中
原創不易,請勿轉載(
本不富裕的訪問量雪上加霜)
博主首頁:https://wzlodq.blog.csdn.net/
微信公眾號:唔仄lo咚鏘
如果文章對你有幫助,記得一鍵三連?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/260298.html
標籤:其他
