推薦5個(gè)常用的Python標(biāo)準(zhǔn)庫(kù):
青縣網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
1、os:提供了不少與操作系統(tǒng)相關(guān)聯(lián)的函數(shù)庫(kù)
os包是Python與操作系統(tǒng)的接口。我們可以用os包來(lái)實(shí)現(xiàn)操作系統(tǒng)的許多功能,比如管理系統(tǒng)進(jìn)程,改變當(dāng)前路徑,改變文件權(quán)限等。但要注意,os包是建立在操作系統(tǒng)的平臺(tái)上的,許多功能在Windows系統(tǒng)上是無(wú)法實(shí)現(xiàn)的。另外,在使用os包中,要注意其中的有些功能已經(jīng)被其他的包取代。
我們通過(guò)文件系統(tǒng)來(lái)管理磁盤(pán)上儲(chǔ)存的文件。查找、刪除、復(fù)制文件以及列出文件列表等都是常見(jiàn)的文件操作。這些功能通??梢栽诓僮飨到y(tǒng)中看到,但現(xiàn)在可以通過(guò)Python標(biāo)準(zhǔn)庫(kù)中的glob包、shutil包、os.path包以及os包的一些函數(shù)等,在Python內(nèi)部實(shí)現(xiàn)。
2、sys:通常用于命令行參數(shù)的庫(kù)
sys包被用于管理Python自身的運(yùn)行環(huán)境。Python是一個(gè)解釋器,也是一個(gè)運(yùn)行在操作系統(tǒng)上的程序。我們可以用sys包來(lái)控制這一程序運(yùn)行的許多參數(shù),比如說(shuō)Python運(yùn)行所能占據(jù)的內(nèi)存和CPU,Python所要掃描的路徑等。另一個(gè)重要功能是和Python自己的命令行互動(dòng),從命令行讀取命令和參數(shù)。
3、random:用于生成隨機(jī)數(shù)的庫(kù)
Python標(biāo)準(zhǔn)庫(kù)中的random函數(shù),可以生成隨機(jī)浮點(diǎn)數(shù)、整數(shù)、字符串,甚至幫助你隨機(jī)選擇列表序列中的一個(gè)元素,打亂一組數(shù)據(jù)等。
4、math:提供了數(shù)學(xué)常數(shù)和數(shù)學(xué)函數(shù)
標(biāo)準(zhǔn)庫(kù)中,Python定義了一些新的數(shù)字類(lèi)型,以彌補(bǔ)之前的數(shù)字類(lèi)型可能的不足。標(biāo)準(zhǔn)庫(kù)還包含了random包,用于處理隨機(jī)數(shù)相關(guān)的功能。math包補(bǔ)充了一些重要的數(shù)學(xué)常數(shù)和數(shù)學(xué)函數(shù),比如pi、三角函數(shù)等等。
5、datetime:日期和時(shí)間的操作庫(kù)
日期和時(shí)間的管理并不復(fù)雜,但容易犯錯(cuò)。Python的標(biāo)準(zhǔn)庫(kù)中對(duì)日期和時(shí)間的管理頗為完善,你不僅可以進(jìn)行日期時(shí)間的查詢和變換,還可以對(duì)日期時(shí)間進(jìn)行運(yùn)算。通過(guò)這些標(biāo)準(zhǔn)庫(kù),還可以根據(jù)需要控制日期時(shí)間輸出的文本格式
Python比較常見(jiàn)的庫(kù)有:Arrow、Behold、Click、Numba、Matlibplot、Pillow等:
1、Arrow
Python中處理時(shí)間的庫(kù)有datetime,但是它過(guò)于簡(jiǎn)單,使用起來(lái)不夠方便和智能,而Arrow可以說(shuō)非常的方便和智能。它可以輕松地定位幾個(gè)小時(shí)之前的時(shí)間,可以輕松轉(zhuǎn)換時(shí)區(qū)時(shí)間,對(duì)于一個(gè)小時(shí)前,2個(gè)小時(shí)之內(nèi)這樣人性化的信息也能夠準(zhǔn)確解讀。
2、Behold
調(diào)試程序是每個(gè)程序員必備的技能,對(duì)于腳本語(yǔ)言,很多人習(xí)慣于使用print進(jìn)行調(diào)試,然而對(duì)于大項(xiàng)目來(lái)說(shuō),print的功能還遠(yuǎn)遠(yuǎn)不足,我們希望有一個(gè)可以輕松使用,調(diào)試方便,對(duì)變量監(jiān)視完整,格式已于查看的工具,而B(niǎo)ehold就是那個(gè)非常好用的調(diào)試庫(kù)。
3、Click
現(xiàn)在幾乎所有的框架都有自己的命令行腳手架,Python也不例外,那么如何快速開(kāi)發(fā)出屬于自己的命令行程序呢?答案就是使用Python的Click庫(kù)。Click庫(kù)對(duì)命令行api進(jìn)行了大量封裝,你可以輕松開(kāi)發(fā)出屬于自己的CLI命令集。終端的顏色,環(huán)境變量信息,通過(guò)Click都可以輕松進(jìn)行獲取和改變。
4、Numba
如果你從事數(shù)學(xué)方面的分析和計(jì)算,那么Numba一定是你必不可少的庫(kù)。Numpy通過(guò)將高速C庫(kù)包裝在Python接口中來(lái)工作,而Cython使用可選的類(lèi)型將Python編譯為C以提高性能。但是Numba無(wú)疑是最方便的,因?yàn)樗试S使用裝飾器選擇性地加速Python函數(shù)。
5、Matlibplot
做過(guò)數(shù)據(jù)分析,數(shù)據(jù)可視化的數(shù)學(xué)學(xué)生一定知道m(xù)atlab這個(gè)軟件,這是一個(gè)收費(fèi)的數(shù)學(xué)商用軟件,在Python中,Matlibplot就是為了實(shí)現(xiàn)這個(gè)軟件中功能開(kāi)發(fā)的第三方Python庫(kù)。并且它完全是免費(fèi)的,很多學(xué)校都是用它來(lái)進(jìn)行數(shù)學(xué)教學(xué)和研究的。
6、Pillow
圖像處理是任何時(shí)候我們都需要關(guān)注的問(wèn)題,平時(shí)我們看到很多ps中的神技,比如調(diào)整畫(huà)面顏色,飽和度,調(diào)整圖像尺寸,裁剪圖像等等,這些其實(shí)都可以通過(guò)Python簡(jiǎn)單完成,而其中我們需要使用的庫(kù)就是Pillow。
7、pyqt5
Python是可以開(kāi)發(fā)圖形界面程序的。而pyqt就是一款非常好用的第三方GUI庫(kù),有了它,你可以輕松開(kāi)發(fā)出跨平臺(tái)的圖形應(yīng)用程序,其中qtdesigner設(shè)計(jì)器,更是加速了我們開(kāi)發(fā)圖形界面的速度。
除了上述介紹的之外,Python還有很多庫(kù),比如:Pandas、NumPy、SciPy、Seaborn、Keras等。
Python作為一個(gè)設(shè)計(jì)優(yōu)秀的程序語(yǔ)言,現(xiàn)在已廣泛應(yīng)用于各種領(lǐng)域,依靠其強(qiáng)大的第三方類(lèi)庫(kù),Python在各個(gè)領(lǐng)域都能發(fā)揮巨大的作用。
下面我們就來(lái)看一下python中常用到的庫(kù):
數(shù)值計(jì)算庫(kù):
1. NumPy
支持多維數(shù)組與矩陣運(yùn)算,也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。通常與SciPy和Matplotlib一起使用,支持比Python更多種類(lèi)的數(shù)值類(lèi)型,其中定義的最重要的對(duì)象是稱(chēng)為ndarray的n維數(shù)組類(lèi)型,用于描述相同類(lèi)型的元素集合,可以使用基于0的索引訪問(wèn)集合中元素。
2. SciPy
在NumPy庫(kù)的基礎(chǔ)上增加了眾多的數(shù)學(xué)、科學(xué)及工程計(jì)算中常用的庫(kù)函數(shù),如線性代數(shù)、常微分方程數(shù)值求解、信號(hào)處理、圖像處理、稀疏矩陣等,可進(jìn)行插值處理、信號(hào)濾波,以及使用C語(yǔ)言加速計(jì)算。
3. Pandas
基于NumPy的一種工具,為解決數(shù)據(jù)分析任務(wù)而生。納入大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供高效地操作大型數(shù)據(jù)集所需的工具及大量的能快速便捷處理數(shù)據(jù)的函數(shù)和方法,為時(shí)間序列分析提供很好的支持,提供多種數(shù)據(jù)結(jié)構(gòu),如Series、Time-Series、DataFrame和Panel。
數(shù)據(jù)可視化庫(kù):
4. Matplotlib
第一個(gè)Python可視化庫(kù),有許多別的程序庫(kù)都是建立在其基礎(chǔ)上或者直接調(diào)用該庫(kù),可以很方便地得到數(shù)據(jù)的大致信息,功能非常強(qiáng)大,但也非常復(fù)雜。
5. Seaborn
利用了Matplotlib,用簡(jiǎn)潔的代碼來(lái)制作好看的圖表。與Matplotlib最大的區(qū)別為默認(rèn)繪圖風(fēng)格和色彩搭配都具有現(xiàn)代美感。
6. ggplot
基于R的一個(gè)作圖庫(kù)ggplot2,同時(shí)利用了源于《圖像語(yǔ)法》(The Grammar of Graphics)中的概念,允許疊加不同的圖層來(lái)完成一幅圖,并不適用于制作非常個(gè)性化的圖像,為操作的簡(jiǎn)潔度而犧牲了圖像的復(fù)雜度。
7. Bokeh
跟ggplot一樣,Bokeh也基于《圖形語(yǔ)法》的概念。與ggplot不同之處為它完全基于Python而不是從R處引用。長(zhǎng)處在于能用于制作可交互、可直接用于網(wǎng)絡(luò)的圖表。圖表可以輸出為JSON對(duì)象、HTML文檔或者可交互的網(wǎng)絡(luò)應(yīng)用。
8. Plotly
可以通過(guò)Python notebook使用,與Bokeh一樣致力于交互圖表的制作,但提供在別的庫(kù)中幾乎沒(méi)有的幾種圖表類(lèi)型,如等值線圖、樹(shù)形圖和三維圖表。
9. pygal
與Bokeh和Plotly一樣,提供可直接嵌入網(wǎng)絡(luò)瀏覽器的可交互圖像。與其他兩者的主要區(qū)別在于可將圖表輸出為SVG格式,所有的圖表都被封裝成方法,且默認(rèn)的風(fēng)格也很漂亮,用幾行代碼就可以很容易地制作出漂亮的圖表。
10. geoplotlib
用于制作地圖和地理相關(guān)數(shù)據(jù)的工具箱。可用來(lái)制作多種地圖,比如等值區(qū)域圖、熱度圖、點(diǎn)密度圖。必須安裝Pyglet(一個(gè)面向?qū)ο缶幊探涌冢┓娇墒褂谩?/p>
11. missingno
用圖像的方式快速評(píng)估數(shù)據(jù)缺失的情況,可根據(jù)數(shù)據(jù)的完整度對(duì)數(shù)據(jù)進(jìn)行排序或過(guò)濾,或者根據(jù)熱度圖或樹(shù)狀圖對(duì)數(shù)據(jù)進(jìn)行修正。
web開(kāi)發(fā)庫(kù):
12. Django
一個(gè)高級(jí)的Python Web框架,支持快速開(kāi)發(fā),提供從模板引擎到ORM所需的一切東西,使用該庫(kù)構(gòu)建App時(shí),必須遵循Django的方式。
13. Socket
一個(gè)套接字通訊底層庫(kù),用于在服務(wù)器和客戶端間建立TCP或UDP連接,通過(guò)連接發(fā)送請(qǐng)求與響應(yīng)。
14. Flask
一個(gè)基于Werkzeug、Jinja 2的Python輕量級(jí)框架(microframework),默認(rèn)配備Jinja模板引擎,也包含其他模板引擎或ORM供選擇,適合用來(lái)編寫(xiě)API服務(wù)(RESTful rervices)。
15. Twisted
一個(gè)使用Python實(shí)現(xiàn)的基于事件驅(qū)動(dòng)的網(wǎng)絡(luò)引擎框架,建立在deferred object之上,一個(gè)通過(guò)異步架構(gòu)實(shí)現(xiàn)的高性能的引擎,不適用于編寫(xiě)常規(guī)的Web Apps,更適用于底層網(wǎng)絡(luò)。
數(shù)據(jù)庫(kù)管理:
16. MySQL-python
又稱(chēng)MySQLdb,是Python連接MySQL最流行的一個(gè)驅(qū)動(dòng),很多框架也基于此庫(kù)進(jìn)行開(kāi)發(fā)。只支持Python 2.x,且安裝時(shí)有許多前置條件。由于該庫(kù)基于C語(yǔ)言開(kāi)發(fā),在Windows平臺(tái)上的安裝非常不友好,經(jīng)常出現(xiàn)失敗的情況,現(xiàn)在基本不推薦使用,取代品為衍生版本。
17. mysqlclient
完全兼容MySQLdb,同時(shí)支持Python 3.x,是Django ORM的依賴(lài)工具,可使用原生SQL來(lái)操作數(shù)據(jù)庫(kù),安裝方式與MySQLdb一致。
18. PyMySQL
純Python實(shí)現(xiàn)的驅(qū)動(dòng),速度比MySQLdb慢,最大的特點(diǎn)為安裝方式簡(jiǎn)潔,同時(shí)也兼容MySQL-python。
19. SQLAlchemy
一種既支持原生SQL,又支持ORM的工具。ORM是Python對(duì)象與數(shù)據(jù)庫(kù)關(guān)系表的一種映射關(guān)系,可有效提高寫(xiě)代碼的速度,同時(shí)兼容多種數(shù)據(jù)庫(kù)系統(tǒng),如SQLite、MySQL、PostgreSQL,代價(jià)為性能上的一些損失。
自動(dòng)化運(yùn)維:
20. jumpsever跳板機(jī)
一種由Python編寫(xiě)的開(kāi)源跳板機(jī)(堡壘機(jī))系統(tǒng),實(shí)現(xiàn)了跳板機(jī)的基本功能,包含認(rèn)證、授權(quán)和審計(jì),集成了Ansible、批量命令等。
支持WebTerminal Bootstrap編寫(xiě),界面美觀,自動(dòng)收集硬件信息,支持錄像回放、命令搜索、實(shí)時(shí)監(jiān)控、批量上傳下載等功能,基于SSH協(xié)議進(jìn)行管理,客戶端無(wú)須安裝agent。主要用于解決可視化安全管理,因完全開(kāi)源,容易再次開(kāi)發(fā)。
21. Magedu分布式監(jiān)控系統(tǒng)
一種用Python開(kāi)發(fā)的自動(dòng)化監(jiān)控系統(tǒng),可監(jiān)控常用系統(tǒng)服務(wù)、應(yīng)用、網(wǎng)絡(luò)設(shè)備,可在一臺(tái)主機(jī)上監(jiān)控多個(gè)不同服務(wù),不同服務(wù)的監(jiān)控間隔可以不同,同一個(gè)服務(wù)在不同主機(jī)上的監(jiān)控間隔、報(bào)警閾值可以不同,并提供數(shù)據(jù)可視化界面。
22. Magedu的CMDB
一種用Python開(kāi)發(fā)的硬件管理系統(tǒng),包含采集硬件數(shù)據(jù)、API、頁(yè)面管理3部分功能,主要用于自動(dòng)化管理筆記本、路由器等常見(jiàn)設(shè)備的日常使用。由服務(wù)器的客戶端采集硬件數(shù)據(jù),將硬件信息發(fā)送至API,API負(fù)責(zé)將獲取的數(shù)據(jù)保存至數(shù)據(jù)庫(kù)中,后臺(tái)管理程序負(fù)責(zé)對(duì)服務(wù)器信息進(jìn)行配置和展示。
23. 任務(wù)調(diào)度系統(tǒng)
一種由Python開(kāi)發(fā)的任務(wù)調(diào)度系統(tǒng),主要用于自動(dòng)化地將一個(gè)服務(wù)進(jìn)程分布到其他多個(gè)機(jī)器的多個(gè)進(jìn)程中,一個(gè)服務(wù)進(jìn)程可作為調(diào)度者依靠網(wǎng)絡(luò)通信完成這一工作。
24. Python運(yùn)維流程系統(tǒng)
一種使用Python語(yǔ)言編寫(xiě)的調(diào)度和監(jiān)控工作流的平臺(tái),內(nèi)部用于創(chuàng)建、監(jiān)控和調(diào)整數(shù)據(jù)管道。允許工作流開(kāi)發(fā)人員輕松創(chuàng)建、維護(hù)和周期性地調(diào)度運(yùn)行工作流,包括了如數(shù)據(jù)存儲(chǔ)、增長(zhǎng)分析、Email發(fā)送、A/B測(cè)試等諸多跨多部門(mén)的用例。
GUI編程:
25. Tkinter
一個(gè)Python的標(biāo)準(zhǔn)GUI庫(kù),可以快速地創(chuàng)建GUI應(yīng)用程序,可以在大多數(shù)的UNIX平臺(tái)下使用,同樣可以應(yīng)用在Windows和Macintosh系統(tǒng)中,Tkinter 8.0的后續(xù)版本可以實(shí)現(xiàn)本地窗口風(fēng)格,并良好地運(yùn)行在絕大多數(shù)平臺(tái)中。
26. wxPython
一款開(kāi)源軟件跨平臺(tái)GUI庫(kù)wxWidgets的Python封裝和Python模塊,是Python語(yǔ)言的一套優(yōu)秀的GUI圖形庫(kù),允許程序員很方便地創(chuàng)建完整的、功能健全的GUI用戶界面。
27. PyQt
一個(gè)創(chuàng)建GUI應(yīng)用程序的工具庫(kù),是Python編程語(yǔ)言和Qt的成功融合,可以運(yùn)行在所有主要操作系統(tǒng)上,包括UNIX、Windows和Mac。PyQt采用雙許可證,開(kāi)發(fā)人員可以選擇GPL和商業(yè)許可,從PyQt的版本4開(kāi)始,GPL許可證可用于所有支持的平臺(tái)。
28. PySide
一個(gè)跨平臺(tái)的應(yīng)用程式框架Qt的Python綁定版本,提供與PyQt類(lèi)似的功能,并相容API,但與PyQt不同處為其使用LGPL授權(quán)。
更多Python知識(shí)請(qǐng)關(guān)注Python自學(xué)網(wǎng)。
1.dir函數(shù)式可以查看對(duì)象的屬性
使用方法很簡(jiǎn)單,舉os類(lèi)型為例,在Python命令窗口輸入?dir(‘os’)?即可查看os模塊的屬性
打開(kāi)cmd命令窗口:
2.如何查看對(duì)象某個(gè)屬性的幫助文檔:兩種方法如下:
3.如何查看某個(gè)對(duì)象的詳細(xì):
3.如何查看某個(gè)對(duì)象的函數(shù):
一些python常用函數(shù)包:
1、Urllib3
Urllib3是一個(gè) Python 的 HTTP 客戶端,它擁有 Python 標(biāo)準(zhǔn)庫(kù)中缺少的許多功能:
線程安全
連接池
客戶端 SSL/TLS 驗(yàn)證
使用分段編碼上傳文件
用來(lái)重試請(qǐng)求和處理 HTTP 重定向的助手
支持 gzip 和 deflate 編碼
HTTP 和 SOCKS 的代理支持
2、Six
six 是一個(gè)是 Python 2 和 3 的兼容性庫(kù)。這個(gè)項(xiàng)目旨在支持可同時(shí)運(yùn)行在 Python 2 和 3 上的代碼庫(kù)。它提供了許多可簡(jiǎn)化 Python 2 和 3 之間語(yǔ)法差異的函數(shù)。
3、botocore、boto3、s3transfer、awscli
Botocore是 AWS 的底層接口。Botocore是 Boto3 庫(kù)(#22)的基礎(chǔ),后者讓你可以使用 Amazon S3 和 Amazon EC2 一類(lèi)的服務(wù)。Botocore 還是 AWS-CLI 的基礎(chǔ),后者為 AWS 提供統(tǒng)一的命令行界面。
S3transfer(#7)是用于管理 Amazon S3 傳輸?shù)?Python 庫(kù)。它正在積極開(kāi)發(fā)中,其介紹頁(yè)面不推薦人們現(xiàn)在使用,或者至少等版本固定下來(lái)再用,因?yàn)槠?API 可能發(fā)生變化,在次要版本之間都可能更改。Boto3、AWS-CLI和其他許多項(xiàng)目都依賴(lài)s3transfer。
4、Pip
pip是“Pip Installs Packages”的首字母遞歸縮寫(xiě)。
pip很容易使用。要安裝一個(gè)包只需pip install package name即可,而刪除包只需pip uninstall package name即可。
最大優(yōu)點(diǎn)之一是它可以獲取包列表,通常以requirements.txt文件的形式獲取。該文件能選擇包含所需版本的詳細(xì)規(guī)范。大多數(shù) Python 項(xiàng)目都包含這樣的文件。
如果結(jié)合使用pip與virtualenv(列表中的 #57),就可以創(chuàng)建可預(yù)測(cè)的隔離環(huán)境,同時(shí)不會(huì)干擾底層系統(tǒng),反之亦然。
5、Python-dateutil
python-dateutil模塊提供了對(duì)標(biāo)準(zhǔn)datetime模塊的強(qiáng)大擴(kuò)展。我的經(jīng)驗(yàn)是,常規(guī)的Python datetime缺少哪些功能,python-dateutil就能補(bǔ)足那一塊。
6、Requests
Requests建立在我們的 #1 庫(kù)——urllib3基礎(chǔ)上。它讓 Web 請(qǐng)求變得非常簡(jiǎn)單。相比urllib3來(lái)說(shuō),很多人更喜歡這個(gè)包。而且使用它的最終用戶可能也比urllib3更多。后者更偏底層,并且考慮到它對(duì)內(nèi)部的控制級(jí)別,它一般是作為其他項(xiàng)目的依賴(lài)項(xiàng)。
7、Certifi
近年來(lái),幾乎所有網(wǎng)站都轉(zhuǎn)向 SSL,你可以通過(guò)地址欄中的小鎖符號(hào)來(lái)識(shí)別它。加了小鎖意味著與該站點(diǎn)的通信是安全和加密的,能防止竊聽(tīng)行為。
8、Idna
根據(jù)其 PyPI 頁(yè)面,idna提供了“對(duì) RFC5891 中指定的應(yīng)用程序中國(guó)際化域名(IDNA)協(xié)議的支持?!?/p>
IDNA的核心是兩個(gè)函數(shù):ToASCII和ToUnicode。ToASCII會(huì)將國(guó)際 Unicode 域轉(zhuǎn)換為 ASCII 字符串。ToUnicode則逆轉(zhuǎn)該過(guò)程。在IDNA包中,這些函數(shù)稱(chēng)為idna.encode()和idna.decode()
9、PyYAML
YAML是一種數(shù)據(jù)序列化格式。它的設(shè)計(jì)宗旨是讓人類(lèi)和計(jì)算機(jī)都能很容易地閱讀代碼——人類(lèi)很容易讀寫(xiě)它的內(nèi)容,計(jì)算機(jī)也可以解析它。
PyYAML是 Python 的YAML解析器和發(fā)射器,這意味著它可以讀寫(xiě)YAML。它會(huì)把任何 Python 對(duì)象寫(xiě)成YAML:列表、字典,甚至是類(lèi)實(shí)例都包括在內(nèi)。
10、Pyasn1
像上面的IDNA一樣,這個(gè)項(xiàng)目也非常有用:
ASN.1 類(lèi)型和 DER/BER/CER 編碼(X.208)的純 Python 實(shí)現(xiàn)
所幸這個(gè)已有數(shù)十年歷史的標(biāo)準(zhǔn)有很多信息可用。ASN.1是 Abstract Syntax Notation One 的縮寫(xiě),它就像是數(shù)據(jù)序列化的教父。它來(lái)自電信行業(yè)。也許你知道協(xié)議緩沖區(qū)或 Apache Thrift?這就是它們的 1984 年版本。
11、Docutils
Docutils是一個(gè)模塊化系統(tǒng),用來(lái)將純文本文檔處理為很多有用的格式,例如 HTML、XML 和 LaTeX 等。Docutils能讀取reStructuredText格式的純文本文檔,這種格式是類(lèi)似于 MarkDown 的易讀標(biāo)記語(yǔ)法。
12、Chardet
你可以用chardet模塊來(lái)檢測(cè)文件或數(shù)據(jù)流的字符集。比如說(shuō),需要分析大量隨機(jī)文本時(shí),這會(huì)很有用。但你也可以在處理遠(yuǎn)程下載的數(shù)據(jù),但不知道用的是什么字符集時(shí)使用它。
13、RSA
rsa包是一個(gè)純 Python 的 RSA 實(shí)現(xiàn)。它支持:
加密和解密
簽名和驗(yàn)證簽名
根據(jù) PKCS#1 1.5 版生成密鑰
它既可以用作 Python 庫(kù),也能在命令行中使用。
14、Jmespath
JMESPath,發(fā)音為“James path”,使 Python 中的 JSON 更容易使用。它允許你聲明性地指定如何從 JSON 文檔中提取元素。
15、Setuptools
它是用于創(chuàng)建 Python 包的工具。不過(guò),其文檔很糟糕。它沒(méi)有清晰描述它的用途,并且文檔中包含無(wú)效鏈接。最好的信息源是這個(gè)站點(diǎn),特別是這個(gè)創(chuàng)建 Python 包的指南。
16、Pytz
像dateutils一樣,這個(gè)庫(kù)可幫助你處理日期和時(shí)間。有時(shí)候,時(shí)區(qū)處理起來(lái)可能很麻煩。幸好有這樣的包,可以讓事情變得簡(jiǎn)單些。
17、Futures
從 Python 3.2 開(kāi)始,python 提供current.futures模塊,可幫助你實(shí)現(xiàn)異步執(zhí)行。futures 包是該庫(kù)適用于 Python 2 的 backport。它不適用于 Python3 用戶,因?yàn)?Python 3 原生提供了該模塊。
18、Colorama
使用 Colorama,你可以為終端添加一些顏色:
更多Python知識(shí)請(qǐng)關(guān)注Python自學(xué)網(wǎng)
標(biāo)準(zhǔn)庫(kù)比較多 功能也不同:
標(biāo)準(zhǔn)庫(kù)
sys
系統(tǒng)相關(guān)的參數(shù)和函數(shù)。 sys 庫(kù)一般用來(lái)訪問(wèn)和修改系統(tǒng)相關(guān)信息,比如查看 python 版本、系統(tǒng)環(huán)境變量、模塊信息和 python 解釋器相關(guān)信息等等。
os
操作系統(tǒng)接口模塊。這個(gè)庫(kù)提供了訪問(wèn)操作系統(tǒng)相關(guān)依賴(lài)的方式,比如輸入輸出操作、讀寫(xiě)操作、操作系統(tǒng)異常錯(cuò)誤信息、進(jìn)程線程管理、文件管理、調(diào)度程序等等。
re
正則表達(dá)式操作。這個(gè)庫(kù)是我喜歡并且經(jīng)常會(huì)用到的庫(kù),在對(duì)大量字符串進(jìn)行處理的時(shí)候用正則表達(dá)式是最快速有效的方式,但是正則表達(dá)式的學(xué)習(xí)曲線較高,有興趣的朋友可以訪問(wèn)這個(gè)網(wǎng)站學(xué)習(xí)。
math
數(shù)學(xué)函數(shù)庫(kù)。 math 庫(kù)提供了對(duì) C 語(yǔ)言標(biāo)準(zhǔn)定義的數(shù)學(xué)函數(shù)訪問(wèn),比如數(shù)論(Number-theoretic)的各種表示方法、冪和對(duì)數(shù)函數(shù)(Power and logarithmic functions)、三角函數(shù)(Trigonometric functions)、常量圓周率(π)和自然常數(shù)(e)等等。
random
生成偽隨機(jī)數(shù)。
偽隨機(jī)數(shù)與隨機(jī)數(shù)(真隨機(jī)數(shù))不同的是執(zhí)行環(huán)境,隨機(jī)數(shù)是真實(shí)世界中通過(guò)物理過(guò)程實(shí)踐得出結(jié)論,而偽隨機(jī)數(shù)是通過(guò)計(jì)算機(jī)的特定算法生成的數(shù),所以這個(gè)過(guò)程是可預(yù)測(cè)的、有規(guī)律的,只是循環(huán)周期較長(zhǎng),并不能與現(xiàn)實(shí)場(chǎng)景相切合。
random庫(kù)提供生成隨機(jī)數(shù),可以模擬現(xiàn)實(shí)世界中隨機(jī)取數(shù)、隨機(jī)抽獎(jiǎng)等等。
logging
日志記錄工具。這個(gè)庫(kù)提供了對(duì)應(yīng)用程序和庫(kù)函數(shù)的日志記錄,日常開(kāi)發(fā)中我們經(jīng)常需要通過(guò)日志打印出當(dāng)前程序的運(yùn)行狀態(tài),實(shí)時(shí)查看可能出現(xiàn)的堆棧異常和錯(cuò)誤信息。
json
Json 編碼和解碼器。 json 庫(kù)提供了對(duì) json 數(shù)據(jù)的支持,日常開(kāi)發(fā)中我們做前后端分離需要對(duì)傳輸數(shù)據(jù) json 進(jìn)行序列化和反序列化操作,以保證對(duì)數(shù)據(jù)的完整性和有效性,而序列化和反序列化其實(shí)就是編碼和解碼的過(guò)程。
pickle
Python 對(duì)象序列化庫(kù)。 pickle 庫(kù)支持對(duì) python 對(duì)象進(jìn)行序列化和反序列化操作,當(dāng)我們需要將處理好的對(duì)象保存到文件或數(shù)據(jù)庫(kù)中時(shí),就可以將其序列化成二進(jìn)制數(shù)據(jù),從而更好的保存起來(lái)。
shelve
Python 對(duì)象持久化。簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)方案。
socket
底層網(wǎng)絡(luò)接口。 socket(套接字) 庫(kù)提供了標(biāo)準(zhǔn)的BSD(伯克利套接字) Socket API,可以通過(guò)訪問(wèn)底層操作系統(tǒng) Socket 的相關(guān)接口進(jìn)行網(wǎng)絡(luò)通訊。
datetime
基本日期和時(shí)間類(lèi)型庫(kù)。該庫(kù)提供了各種簡(jiǎn)單和復(fù)雜的方式處理日期和時(shí)間,日常我們會(huì)用時(shí)間測(cè)算時(shí)間消耗、復(fù)雜度,對(duì)存儲(chǔ)的創(chuàng)建時(shí)間和修改時(shí)間也需要進(jìn)一步說(shuō)明,對(duì)計(jì)時(shí)器的描述和控制也需要用到該庫(kù)。
hashlib
安全哈希和消息摘要。摘要算法 其實(shí)就是對(duì)某些數(shù)據(jù)進(jìn)行加密(不可逆的加密算法),因?yàn)楸患用艿臄?shù)據(jù)無(wú)法破解,所以就能防止被篡改。常見(jiàn)的摘要算法有 MD5、SHA1,一般我們會(huì)用 MD5 對(duì)用戶口令進(jìn)行加密,防止盜用后被輕易破解;而 SHA1 與 MD5 類(lèi)似,但是 SHA1 會(huì)產(chǎn)生更長(zhǎng)的長(zhǎng)度,也更安全,但是算法的復(fù)雜性通常伴隨著存儲(chǔ)空間和時(shí)間的消耗。要說(shuō)比SHA1更長(zhǎng)的字符長(zhǎng)度,還有 SHA224、SHA256、SHA384 和 SHA512,看名字就能知道。
大家都知道無(wú)論算法生成的字符長(zhǎng)度如何都有可能發(fā)生碰撞(被破解),這是不可避免的,所以具體場(chǎng)景具體情況而定。
configparser
配置文件解析器。 configparser 庫(kù)可以輕松定制配置文件,通過(guò)解析配置文件的信息我們就可以全局訪問(wèn)相關(guān)配置。
urllib
URL 處理模塊。 urllib 庫(kù)集成了處理 URLs(統(tǒng)一資源定位符)的各種模塊:
URL urllib.request URL robots.txt urllib 庫(kù)對(duì)訪問(wèn)網(wǎng)絡(luò)有很好的支持,提供了對(duì)數(shù)據(jù)的訪問(wèn)和處理、文件的上傳和下載、記錄 cookie 和 session 等等。
itertools
為高效循環(huán)而創(chuàng)建迭代器的函數(shù)。 itertools 庫(kù)也是經(jīng)常需要用到,當(dāng)我們要對(duì)某些數(shù)進(jìn)行 for-in 時(shí)就需要先將其處理成一個(gè)可迭代對(duì)象,之后我們才能進(jìn)行遍歷操作。
collections
容器數(shù)據(jù)類(lèi)型庫(kù)。 collections 庫(kù)提供了對(duì)所有容器數(shù)據(jù)類(lèi)型的支持,包括 dict, list, set 和 tuple。我們可以用此庫(kù)對(duì)不同數(shù)據(jù)類(lèi)型進(jìn)行操作,常有的函數(shù)方法有這些:
namedtuple() 創(chuàng)建命名元組子類(lèi)的工廠函數(shù) deque 類(lèi)似列表(list)的容器,實(shí)現(xiàn)了在兩端快速添加(append)和彈出(pop) ChainMap 類(lèi)似字典(dict)的容器類(lèi),將多個(gè)映射集合到一個(gè)視圖里面 Counter 字典的子類(lèi),提供了可哈希對(duì)象的計(jì)數(shù)功能 OrderedDict 字典的子類(lèi),保存了他們被添加的順序 defaultdict 字典的子類(lèi),提供了一個(gè)工廠函數(shù),為字典查詢提供一個(gè)默認(rèn)值 UserDict 封裝了字典對(duì)象,簡(jiǎn)化了字典子類(lèi)化 UserList 封裝了列表對(duì)象,簡(jiǎn)化了列表子類(lèi)化 UserString 封裝了列表對(duì)象,簡(jiǎn)化了字符串子類(lèi)化 functools
高階函數(shù)和可調(diào)用對(duì)象上的操作。該庫(kù)主要調(diào)用高階函數(shù),是常規(guī)函數(shù)的一種補(bǔ)充。目前庫(kù)中包含以下幾種函數(shù):
cmp_to_key lru_cache total_ordering partial partialmethod reduce singledispatch update_wrapper wraps threading
線程并行庫(kù)。 threading 庫(kù)支持線程和多線程的操作,針對(duì)多線程并發(fā)的問(wèn)題可以給數(shù)據(jù)加同步鎖,一次只能讓一個(gè)線程處理數(shù)據(jù),從而避免出現(xiàn)數(shù)據(jù)讀寫(xiě)混亂。
在 CPython 解釋器上,因?yàn)镚IL(全局解釋器鎖)鎖機(jī)制的存在的,被設(shè)計(jì)成線程安全,所以同一時(shí)間只能執(zhí)行一個(gè)線程,這就導(dǎo)致了多線程不能發(fā)揮出計(jì)算機(jī)的多核特性。
multiprocessing
進(jìn)程并行庫(kù)。 multiprocessing 庫(kù)與 threading 庫(kù)很類(lèi)似,不同的是進(jìn)程庫(kù)可以創(chuàng)建子進(jìn)程避開(kāi) GIL,從而彌補(bǔ)線程庫(kù)存在的劣勢(shì)和發(fā)揮計(jì)算機(jī)的多核特性。
timeit
測(cè)量小代碼片段的執(zhí)行時(shí)間。此庫(kù)主要用來(lái)計(jì)算運(yùn)行代碼的時(shí)間消耗,支持多種方式傳入?yún)?shù)。
atexit
退出處理器。當(dāng)處理一個(gè)函數(shù)需要立馬退出時(shí)可以使用該庫(kù)。
abc
抽象基類(lèi)。 abc 庫(kù)定義抽象基類(lèi),以便其他類(lèi)派生出新類(lèi)。比如 collections 容器庫(kù)中就有此派生出的 collections.abc 類(lèi),派生出來(lái)的類(lèi)可以進(jìn)一步實(shí)現(xiàn)。
asyncio
異步IO庫(kù)。 asyncio 庫(kù)是一個(gè)用 async/await 關(guān)鍵字編寫(xiě)并發(fā)的庫(kù),為多個(gè)異步框架提供基礎(chǔ)功能,能夠?qū)崿F(xiàn)高性能的網(wǎng)絡(luò)、Web服務(wù)器、數(shù)據(jù)庫(kù)連接和分布式任務(wù)隊(duì)列等。
copy
淺層和深層復(fù)制操作。 copy 庫(kù)提供對(duì)對(duì)象的拷貝,我們都知道要制作對(duì)象副本,是無(wú)法通過(guò)簡(jiǎn)單值傳遞創(chuàng)建新變量的方式做到,因?yàn)樾伦兞克赶虻膬?nèi)存空間依舊是原對(duì)象本身,所以對(duì)新變量進(jìn)行任何操作都會(huì)改變?cè)瓕?duì)象。那么, copy 庫(kù)就提供了制作對(duì)象副本的各種方法,會(huì)開(kāi)辟一個(gè)新的內(nèi)存空間存放副本對(duì)象,修改操作不會(huì)對(duì)原對(duì)象有任何干預(yù)。
csv
csv(Comma Separated Values)文件讀寫(xiě)庫(kù)。此庫(kù)支持以純文本的形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)。
operator
標(biāo)準(zhǔn)運(yùn)算符替代函數(shù)庫(kù)。此庫(kù)是將 python 自有的運(yùn)算符作為有效函數(shù),比如表達(dá)式 x+y 可以用函數(shù) operator.add(x, y) 表示;比如表達(dá)式 a*b 可以用函數(shù) operator.mul(a, b) 表示,等等。
enum
枚舉庫(kù)。 enum 庫(kù)支持創(chuàng)建枚舉類(lèi)來(lái)存儲(chǔ)大量同類(lèi)型的不可變常量,以便其他函數(shù)調(diào)用。創(chuàng)建出來(lái)的枚舉類(lèi)是可迭代對(duì)象,所以可以用 for-in 枚舉出所有常量。
heapq
堆隊(duì)列算法。這個(gè)模塊提供了堆隊(duì)列算法的實(shí)現(xiàn),也稱(chēng)為優(yōu)先隊(duì)列算法。優(yōu)先隊(duì)列中的每個(gè)元素都有各自的優(yōu)先級(jí),優(yōu)先級(jí)最高的元素最先得到服務(wù)。所以當(dāng)我們要求前n最大/最小值的時(shí)候就可以用此算法來(lái)實(shí)現(xiàn), heapq 庫(kù)中也提供了相應(yīng)函數(shù)實(shí)現(xiàn)。
http
HTTP 模塊。 http 模塊是一個(gè)包,收集了多個(gè)處理超文本傳輸協(xié)議的模塊:
urllib.request http 模塊通過(guò) http.HTTPStatus 枚舉定義了HTTP狀態(tài)碼 以及相關(guān)聯(lián)消息。
profile、pstats
性能分析工具。 profile 模塊提供了 profile 和 cProfile 兩種不同實(shí)現(xiàn)的性能分析工具,可用來(lái)描述程序各個(gè)部分的執(zhí)行時(shí)間和頻率,統(tǒng)計(jì)后的信息可以通過(guò) pstats 模塊保存并使用。
ssl
TLS/SSL(傳輸安全協(xié)議)。此模塊提供對(duì)安全協(xié)議的支持,通過(guò)應(yīng)用上下文,可將 TLS(傳輸層安全性協(xié)議)或其前身 SSL(安全套接層)支持安全協(xié)議,能為互聯(lián)網(wǎng)通信提供安全和數(shù)據(jù)完整性保障。一般 HTTPS 協(xié)議都支持 TLS/SSL 加密。
unitest
單元測(cè)試框架。 unitest 庫(kù)常用于單元測(cè)試,受到 JUnit 和其他主流測(cè)試庫(kù)的啟發(fā), unitest 庫(kù)的功能和函數(shù)與它們有著相似的風(fēng)格。
uuid
UUID庫(kù)。 uuid 庫(kù)主要用途是生成隨機(jī)字符串,庫(kù)中有多個(gè)版本的 UUID 對(duì)象方法,比如版本 1、3、4 和 5 的 uuid1() 、 uuid3() 、 uuid4() 和 uuid5() 。需要注意的是,如果要生成隨機(jī)字符串,可以使用 uuid1() 和 uuid4() ,但是 uuid1() 會(huì)存在隱私風(fēng)險(xiǎn),因?yàn)樯傻脑砝镞叞脩粼L問(wèn)計(jì)算機(jī)的網(wǎng)絡(luò)地址,而 uuid4() 是通過(guò)隨機(jī)字符生成。
希望可以幫助到你。