天天看點

Python 程式員都會喜歡的 6 個庫

在程式設計時,小挫折可能與大難題一樣令人痛苦。沒人希望在費勁心思之後,隻是做到彈出消息視窗或是快速寫入資料庫。是以,程式員都會喜歡那些能夠快速處理這些問題,同時長遠來看也很健壯的解決方案。

下面這6個python庫既可以快速解決眼前的棘手問題,同時也能夠作為大型項目的基礎。

Python 程式員都會喜歡的 6 個庫

是什麼:pyglet是一個純python語言編寫的跨平台架構,用于開發多媒體和視窗特效應用。

為什麼需要它:從頭開發圖形界面應用所需要的功能子產品是十分繁瑣的,pyglet提供了大量現成的子產品,省去了很多的時間:視窗函數,opengl特效,音頻與視訊回放,鍵鼠處理以及圖檔處理。(不過,pyglet并沒有提供類似按鈕、工具欄或菜單等ui部件。)

所有上述子產品都是在windows、os x或linux平台下原生實作的,并不依賴外部二進制包;它是純python語言編寫的。pyglet通過bsd協定釋出,可以用于任何商業和開源項目。

Python 程式員都會喜歡的 6 個庫

是什麼:peewee是一個小型但是十分強大的庫,支援通過orm的方式通路資料庫,原生支援sqlite、mysql和postgresql等資料庫。

為什麼需要它: 任何一個需要經常使用外部資料的應用基本都會用到資料庫,但是通過臨時連接配接從資料庫中讀寫資料會帶來很多麻煩。

peewee提供了一條通路資料庫資源的安全、穩定的通道。對于python程式員和資料庫工程師來說,該庫所提供的python類使用起來将會得 心應手。有了peewee的支援,我們可以快速便捷地通路資料庫,後續還可以擴充加入更多的選項,不需要重新設計。peewee同時原生支援資料庫事務 (transaction),并有許多可選的額外子產品,提供了從資料庫連接配接池(connection pooling)到類似多對多(many-to-many)的進階field類型等功能。

Python 程式員都會喜歡的 6 個庫

是什麼: bottle是一個小型的輕量網絡開發架構,同時速度也很快。

為什麼需要它: 如果你隻是想快速建立一個restful api接口,或者隻想用網絡開發架構的做一個簡單的應用,bottle可以輕松地滿足你的要求。它具備了你将需要的所有功能:路由、模闆、通路請求與響應 資料(request and response data)、支援多種網絡伺服器以及websockets等進階功能。

建立一個應用所需的工作極少,而且bottle在設計時就考慮了可擴充性,如果需要更多進階功能,随時就可以接入。

是什麼:簡單來說,invoke 讓你通過一個python庫便捷地執行系統管理任務。

為什麼需要它: 誰不想要一個“可以運作shell指令、定義并歸類執行任務的簡潔、進階接口”呢?利用python替代一般的shell腳本,并執行相應的任務,是完全 合理的。invoke提供了執行常見指令行任務并進行管理的解決方案。對于invoke來說,每個管理任務就像是python函數一樣,可以在此基礎上優 雅地設計更為複雜的任務。

需要注意的是,invoke目前仍是預覽版;如果你想使用穩定的工具(即使是不再積極開發),可以考慮invoke的前身——fabric。

是什麼:splinter是一個自動化測試網絡應用的python庫。

為什麼需要它: 大家都知道,沒有什麼比自動化網絡應用測試更無聊的事了。有了splinter,就可以将打開浏覽器、輸入url、填寫表單、點選按鈕等全部操作自動化。

特定的浏覽器需要使用相應的驅動器(drivers),不過還好已經自帶了chrome和firefox驅動器。另外,splinter還可以通過selenium remote來遠端控制其他機器上的浏覽器。你甚至可以在目标浏覽器中手動執行javascript代碼。

如果你想知道某個浏覽器在浏覽指定網站時的具體情況,那麼splinter将是一個很有用的工具。如果想了解不依賴浏覽器與網站進行互動,可以檢視twill。(譯者:twill是一種腳本語言,支援使用者通過指令行浏覽網絡。)

是什麼:arrow這個庫可以更好地處理python中的日期和時間(data/time)。

為什麼需要它: 處理時區、日期轉換、應對不同的日期格式以及其他日期相關的東西,足夠讓你頭疼一天半的。如果使用python自帶标準庫中的子產品,那麼估計你得頭疼兩天了。

改用arrow庫的話有四大好處,不管長期還是短期都是很有用的。第一,它可以完美替代python中的datetime子產品,這意味着你仍可以使用類似.now()和.utcnow()這些常見的函數調用形式。第二,它提供了滿足轉換時區等常見需求的方法。第三,它提供了“人性化”的日期/時間資訊——也就是,它可以很輕松地告訴你某件事是在“一小時以前”發生的,或是“将在兩小時後”發生。第四,它很容易地将日期/時間資訊轉換為當地時間。