標籤:

一起來寫pydu——常用數據結構工具集庫

pydu是什麼

Prodesire/pydugithub.com圖標

pydu的全稱是Python Data Structures and Utils,它集合了常用的數據結構和工具集,來源於許多知名的開源項目(如requests、flask、django、salt等),以及貢獻者在項目實踐中的總結。

為什麼寫pydu

我們在學習和工作的過程中,可能會閱讀不少開源項目的源碼,作者設計的一個個精巧有用的數據結構和工具集總能讓人或眼前一亮,或可圈可點;也可能在多個項目的實踐過程中,總結出一些足夠通用和好用的數據結構和工具集。

為什麼不把這些優秀的內容記錄下來,將至抽象、優化,形成簡潔、基礎、實用的代碼呢?不論是供大家學習還是使用,都會有一定的幫助。

通過pydu,我們可以:

  • 學習思考Pythonic的寫法
  • 學習思考Python 2和3的異同,以寫出跨Python解釋器兼容的代碼
  • 學習思考Windows和Linux/Unix的異同,以寫出跨平台兼容的代碼
  • 學習思考特定功能具體的實現
  • 輕鬆集成到項目中使用

一個例子

在運維領域,常常會有這樣場景,我們希望運行一段命令,根據命令的結果進一步解析。容易采坑的地方在於結果的語言不同導致分析出錯,那麼就需要確保運行結果都是特定語言(比如說英文)。pydu.cmd.run_with_en_env就是為了解決這個問題。

  1. 思考在Windows和POSIX環境下如何設置前置條件確保運行命令是英文的。
  2. Windows上通過命令行中的chcp可以切換至語言環境,則思考實現pyu.system.chcp;Linux上通過環境變數可以切換語言環境,則通過env來實現
  3. 完成前置條件後,最終調用pydu.cmd.run來運行命令

在實現run_with_en_env的時候,我們就需要考慮平台兼容性、Python解釋器兼容性等問題,是一個非常不錯的促進學習思考的手段。

又要造輪子

程序員最喜歡造輪子了,一遍又一遍,孜孜不倦。pydu似乎是個輪子,但這個輪子和現有的有點不同。它:

  • 所關注的數據結構側重點是特定場景的能有更簡單的使用方式,而非演算法上的基礎數據結構。所以pydu就註定不會像algorithms一樣實現所有的基礎數據結構。
  • 所關注的工具集側重在運維、Web開發、數據科學等領域中常用的內容,如下載文件、運行命令、網路連通檢查、IP合法性檢查等。

如何貢獻

我們非常歡迎小夥伴們貢獻代碼,一起將之變得更加實用和完美。在貢獻代碼時,我們需要:

  • 思考這段代碼是否通用和實用。
  • 提供測試用例。不然我們的代碼可能似平原跑馬,易放難收。
  • 提供docstring或文檔。不然您高深的思想,我們可能參不透。

最後,感謝大家的閱讀!


推薦閱讀:

大數據全棧式開發語言 – Python
Python利器之胎教《唐詩三百首》文本分析
【翻譯搬運】SciPy-Python科學演算法庫

TAG:Python | Python库 |