Python模塊和包-你還在所有寫成一坨嗎?

在使用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

  1. "import" module["as" name](","module["as"name])*
    直接在import後面加模塊名字,而且名字可使用關鍵字as自定義。
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. "from" relative_module "import" identifier["as" name] ("," identifier["as" name])
    增長了from關鍵字
    在這裏插入圖片描述
  3. "from" relative_module "import" "("identifier ["as「 name](","identifier["as" name])*[","]")"
    相似法二,只是在import後加上括號,對導入部分用原則進行特別說明。
    在這裏插入圖片描述
  4. "from" module "import" "*"
    將一個模塊下的全部成員都導入到當前模塊。
    在這裏插入圖片描述

查找模塊


當import一個模塊時,Python要去哪裏查找模塊文件呢?
Python查找模塊有3步:svg

  1. 在當前目錄種查找
  2. 若沒有找到則從環境變量PYTHONPATH中查找
  3. 若仍沒找到則到安裝目錄中查找

實際上要將查找目錄的信息存放到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模塊。

  1. 建立包
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. 添加模塊

在這裏插入圖片描述在這裏插入圖片描述

  1. 調用包
    在這裏插入圖片描述

包的導入


包的導入和模塊的導入語法規則同樣,例如:
在這裏插入圖片描述
可是和模塊導入不一樣是第4種帶星號的用法。
from mypackage import *理想狀況下會找出包的全部子模塊並導入,但實際狀況並不是如此。Python會在初始化文件裏按照一個名爲__all__的列表,導入該列表給出的模塊名。

好比定義__all__列表:
在這裏插入圖片描述
在這裏插入圖片描述
__all__能夠看做是包的索引,在編寫Python時,建議在__init__.py文件明肯定義_-all__列表。

內嵌包


對於功能更復雜的程序,能夠用內嵌包,即一個大包套着若干子包,每一個子包又包含若干模塊。
好比Python處理XML的標準庫就包含了四個子包:
在這裏插入圖片描述
對於內嵌包的使用,另外注意的是在裝載模塊時要使用包和模塊的全名,即指出是哪一個包的模塊。如:
在這裏插入圖片描述

Python系列博客持續更新中

原創不易,請勿轉載本不富裕的訪問量雪上加霜
博主首頁:https://wzlodq.blog.csdn.net/
微信公衆號:唔仄lo咚鏘
若是文章對你有幫助,記得一鍵三連❤

本文同步分享在 博客「唔仄lo咚鏘」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索