想知道Python取得如此巨大成功的原因嗎苇本?只要看看Python提供的大量庫(kù)就知道了
,包括原生庫(kù)和第三方庫(kù)菜拓。不過瓣窄,有這么多Python庫(kù),有些庫(kù)得不到應(yīng)有的關(guān)注也就不足為奇了纳鼎。此外俺夕,只在一個(gè)領(lǐng)域里的工作的人并不知道另一個(gè)領(lǐng)域里有什么好東西,不知道其他領(lǐng)域的東西能產(chǎn)出什么有用的價(jià)值贱鄙。
沒有Python軟件工具和學(xué)習(xí)資料的小伙伴可以點(diǎn)擊下方鏈接自行獲取
http://note.youdao.com/noteshare?id=7e3c432b74512d52b75aafc4609451b9
下面給大家列出10個(gè)你可能忽略劝贸,但絕對(duì)值得注意的Python庫(kù)
,這些工具的用途非常廣泛逗宁, 簡(jiǎn)化了從文件系統(tǒng)訪問映九、數(shù)據(jù)庫(kù)編程、云服務(wù)到構(gòu)建輕量級(jí)web應(yīng)用程序瞎颗、創(chuàng)建gui件甥、圖像工具捌议、Excel和Word文件等等的事情的工作復(fù)雜度。有些庫(kù)是眾所周知的引有,有些則不太為人所知瓣颅,但是所有這些Python庫(kù)都應(yīng)該在各位的工具箱中占有一席之地。
1. Arrow
Arrow: 讓你更方便地處理日期和時(shí)間譬正。
為什么要使用Arrow:還記得我們之前講過的日期計(jì)算嗎宫补?實(shí)際上那是一個(gè)簡(jiǎn)單的計(jì)算教程,思考一下导帝,如果我們想要切換時(shí)區(qū)怎么辦、更加靈活地日期格式化怎么做穿铆?即便是像python這么好用的工具您单,如果你只用原生庫(kù),你也得折騰上一陣子≤癯現(xiàn)在我們有了更好的選擇:Arrow.
Arrow擁有四大優(yōu)勢(shì)虐秦。首先,箭頭是Python的datetime模塊的一個(gè)替代品凤优,這意味著像.now()和.utcnow()這樣的公共函數(shù)調(diào)用可以正常工作悦陋。第二,Arrow提供了一些通用的方法筑辨,比如轉(zhuǎn)換時(shí)區(qū)俺驶。第三,Arrow提供了“人性化”的日期/時(shí)間信息棍辕,比如能夠毫不費(fèi)力地說出“一小時(shí)前”或“兩小時(shí)后”發(fā)生的事情(就如同我們?cè)谑钇谟囝~里講的那樣)暮现。第四,Arrow可以輕松地本地化日期/時(shí)間信息楚昭。
下面是Arrow使用的三個(gè)例子:
2. Behold
Behold: 強(qiáng)大的代碼調(diào)試工具栖袋。
如果你只是使用print進(jìn)行項(xiàng)目的調(diào)試,你會(huì)發(fā)現(xiàn)在大型項(xiàng)目的時(shí)候抚太,這一招根本行不通
因?yàn)榇笮晚?xiàng)目的數(shù)據(jù)流動(dòng)非常復(fù)雜塘幅,你必須跟蹤一個(gè)變量的流動(dòng)才行,這時(shí)候你可能會(huì)出現(xiàn)每隔幾句就寫一個(gè)print的尷尬情況尿贫。這時(shí)候Behold就非常有優(yōu)勢(shì)了电媳,它具有搜索、篩選庆亡、排序功能匆背,而且能跨模塊地展示數(shù)據(jù)流向。
3. Black
black:使用嚴(yán)格的規(guī)則格式化Python代碼身冀。
black是一個(gè)毫不妥協(xié)的格式化工具钝尸,它檢測(cè)到不符合規(guī)范的代碼風(fēng)格直接給你全部格式化了括享,不需要你自己確定,非常適合代碼風(fēng)格紊亂的人群進(jìn)行自我糾正
使用也非常簡(jiǎn)單, CMD/Terminal安裝black:
pip install black
然后同樣珍促,CMD/Terminal進(jìn)入到你的Python文件的文件夾里铃辖,然后輸入:
black 你的文件名.py
即可格式化該文件里的代碼。
4. Bottle
**Bottle:輕量級(jí)網(wǎng)站/api開發(fā)工具
當(dāng)你想要構(gòu)建一個(gè)快速的RESTful API或者使用web框架的基本框架來構(gòu)建一個(gè)應(yīng)用程序時(shí)猪叙,Bottle完全就夠用了娇斩。路由、模板穴翩、請(qǐng)求和響應(yīng)犬第、支持許多種請(qǐng)求協(xié)議,甚至如websockets之類的高級(jí)功能都支持芒帕。同樣歉嗓,啟動(dòng)所需的工作量也很小,而且當(dāng)需要更高級(jí)的功能時(shí)背蟆,Bottle可以很好地?cái)U(kuò)展鉴分,非常優(yōu)秀
5. Click
Click: 讓你快速地為Python應(yīng)用程序構(gòu)建命令行界面。
在沒有用click之前带膀,我們是如何獲取用戶輸入的? 是用 val = input(xxx) 這樣的形式吧志珍?雖然也非常簡(jiǎn)單,但是當(dāng)你想要給它設(shè)定默認(rèn)值的時(shí)候就麻煩了
然而click可以讓你消去這樣的煩惱:
我的天垛叨,簡(jiǎn)直是上天給予Python程序員的禮物啊伦糯。更多的功能請(qǐng)閱讀官方文檔,比如它還能設(shè)定輸入?yún)?shù):
運(yùn)行結(jié)果
6. Nuitka
Nuitka: 將Python編譯成C++級(jí)的可執(zhí)行文件嗽元。
重點(diǎn)是C++級(jí)的應(yīng)用舔株,速度快!速度快还棱!速度快载慈!盡管Cython也能夠把Python編譯成C,但是Cython僅僅關(guān)注數(shù)學(xué)和統(tǒng)計(jì)應(yīng)用程序珍手,而Nuitka可以按原樣使用任何Python程序編譯為C办铡,生成單文件的可執(zhí)行文件。雖然目前還在早期階段琳要,但是可以預(yù)想到它的未來是多么的輝煌
7. Numba
Numba: 有選擇地加速數(shù)學(xué)計(jì)算寡具。
這是我以前夢(mèng)寐以求的功能,我們知道Numpy通過在Python接口中封裝高速的C庫(kù)進(jìn)行工作稚补,Cython將某些用戶選擇的類型編譯為C童叠,但是我們發(fā)現(xiàn)這些東西用起來都不是很順手,感覺“命運(yùn) ” 不是由我掌控的。有了Numba之后厦坛,我們可以對(duì)函數(shù)進(jìn)行加速
你要做的僅僅是在函數(shù)上方加一個(gè)裝飾器五垮,這可真的是非常舒服:
8. Openpyxl
openpyxl: 讀取,寫入和操作Excel文件杜秸。
還記得我們的日歷文章嗎放仗?我們?cè)谀瞧恼吕锞陀玫搅薿penpyxl這個(gè)庫(kù),實(shí)質(zhì)上撬碟,用于操作Excel的不止有這個(gè)庫(kù)可以做到诞挨,但是它有一些獨(dú)特的功能,比如呢蛤,寫成最新的文件格式xlsx惶傻,而且它對(duì)文件大小是沒有限制的,就這兩個(gè)功能已經(jīng)完爆xlwt了其障。當(dāng)然银室,它在速度上是比不過xlwt的,這就需要各位權(quán)衡使用了
9. Peewee
peewee: 支持sqlite, Mysql及PostgreSQL的小型ORM(方便寫數(shù)據(jù)庫(kù)的)静秆。
這是我在python上接觸的第一個(gè)ORM粮揉,不是所有人都喜歡用這個(gè)玩意兒巡李,但是對(duì)于那些不喜歡接觸SQL語(yǔ)句開發(fā)的人來說抚笔,這玩意兒簡(jiǎn)直是寶物啊
peewee非常易于構(gòu)建、連接侨拦、操作數(shù)據(jù)庫(kù)殊橙,然后內(nèi)置了許多的查詢操作功能。不過需要注意的是狱从,peewee 3.x 并不完全向舊版本兼容膨蛮。
10. PyFilesystem
PyFilesystem: 簡(jiǎn)化了文件、目錄的處理方法季研,支持任何文件系統(tǒng)的操作敞葛,大幅度提高編程效率。
你的開發(fā)過程中与涡,有沒有為這樣的事情憂愁過:打開一個(gè)不存在文件夾里的文件(新建)惹谐,確定某個(gè)目錄里是否存在某個(gè)文件,確定是否存在某個(gè)目錄
當(dāng)然如果你非常熟練os和io模塊驼卖,你會(huì)覺得這些事情簡(jiǎn)直是so easy. 但是對(duì)于一些不熟悉這兩個(gè)模塊的語(yǔ)句的同學(xué)氨肌,這可得Google一下。幸好酌畜,現(xiàn)在有了PyFilesystem, 我們的編程生活能夠快樂許多怎囚。它能支持任何文件系統(tǒng)的操作,而且提供了許多實(shí)用的函數(shù)桥胞,比如說查看當(dāng)前目錄下的文件:
顯示目錄結(jié)構(gòu)樹
當(dāng)然還有更多的功能恳守,請(qǐng)閱讀官方文檔