在使用Python開發程序時,若是是比較複雜的功能,能夠把功能分紅幾個部分,則須要用到Python的模塊和包。html
模塊
顧名思義,模塊就是一塊一塊的代碼。python
Python模塊
在Python中一個py文件被認爲是一個模塊(module)。
web
導入模塊
導入一個模塊到當前模塊,語法:微信
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種寫法。ide
"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步:svg
- 在當前目錄種查找
- 若沒有找到則從環境變量PYTHONPATH中查找
- 若仍沒找到則到安裝目錄中查找
實際上要將查找目錄的信息存放到sys模塊的path變量中,能夠打印改變了來查看Python的查找目錄。
從查找順序上看出,當前目錄是第一優先查找,因此儘可能不要使用標準庫中已存在的名字,避免Python使用該文件取代標準庫的模塊。優化
模塊編譯
Python執行程序實際上有一個些許你機制,當運行Pyhton模塊文件時,Python會將後綴名爲.py的模塊文件編譯成後綴名.pyc文件,實際解釋執行編譯以後的.pyc文件,相似Java,以此提升裝載速度。url
除了編譯成.pyc字節碼文件外,向Python解釋器傳遞兩個-O參數(-OO)會生成優化的字節碼.pyo文件。pyo文件比pyc文件裝載速度更快,能夠提升Python腳本啓動速度。不過需注意的是,壓縮的pyo文件刪除了py文件裏用來存放註釋的__doc__
屬性,因此用到__doc__
屬性則不能使用該優化方法。spa
包
程序代碼太多能夠分紅多個模塊,而當模塊太多能夠組合成一個包。.net
(
插播反爬信息)博主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的標準庫就包含了四個子包:
對於內嵌包的使用,另外注意的是在裝載模塊時要使用包和模塊的全名,即指出是哪一個包的模塊。如:
原創不易,請勿轉載(
本不富裕的訪問量雪上加霜)
博主首頁:https://wzlodq.blog.csdn.net/
微信公衆號:唔仄lo咚鏘
若是文章對你有幫助,記得一鍵三連❤
本文同步分享在 博客「唔仄lo咚鏘」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。