學習Python的一些Tips

0. Python安裝
  官網提供多種方式,通常Windows下直接安裝exe便可;Linux下基本上自帶python;另外也提供源碼,也可自行編譯;
  若安裝後沒法使用,則檢查一下環境變量是否設置正確。
  額外:除了最主要的官網資料、文檔外,Python的wiki也提供了不少有用的信息

1. Python相關源碼
  0) 標準庫
  1) PyPi包索引(可經過pip工具安裝)
  2) GitHub上的Python項目
  3) Code activestate上面的Python代碼片斷

2. Python安裝包
  0) msi或exe格式直接運行安裝
  1) pip方式安裝,pip install 可安裝whl格式或新版本pip下可直接安裝包PyPi下指定的包
  2) easy_install 安裝egg格式的包
  3) 對於提供源碼的包,可經過python setup.py install 安裝,通常會提供setup.py文件

3. Python開發環境
  0) vim /notepad++/Sublime Text等一系列編輯器
  1) 自帶的基於Tk的IDLE/IPython
  2) PyCharm/Eric或者Eclipse PyDev/VS等基於插件的IDEpython

4. 命名、代碼規範
  0) Google Python Style Guide
  1) PEP8 Python編碼規範
  2) 使用pylint、pyflakes、PEP8代碼風格檢查工具、isort 對import語句分段排序工具、clonedigger代碼重複率查詢等工具檢查代碼

5. 註釋、文檔
  0) 文檔包括註釋和文檔字符串,通常在變量名、函數名、模塊名和類名中
  1) Python只有單行註釋,對於''''''的文檔字符串也可看成註釋;不過不太建議,代碼風格可能不太規範

6. 測試代碼
  0) 對於簡單的單個模塊可用:if __name__ == '__main__'內容中添加測試內容也可
  1) 標準庫中的doctest測試包,把測試寫到文檔字符串中也起到必定的文檔說明的做用,其中文檔字符串內容爲:
    字符 >>> 後面是一個函數調用,下一行是指望的執行結果,此後調用doctest.testmod()並在執行時增長-v選項便可
  2) 標準庫中的unittest模塊進行單元測試,其須要實現該包含測試方法的繼承類,此後調用unittest.main()執行全部的測試用例
  3) 第三方的測試包nose,其只須要使得以test開頭的函數做爲測試用例;測試文件xxx.py不須要寫if __name__ == '__main__',
    此後執行nosetests xxx.py便可
  4) 集成測試Test Discovery,可測試項目中多個測試用例文件;使用方式:python -m unittest discover
  5) 各個Python測試框架,如pytest、tox框架git

7. 持續集成(自動化構建、測試系統)
  0) buildbot
  1) jenkins
  2) travis-ci
  3) coverage代碼覆蓋率測試工具
  4) toxgithub

8. 調試代碼
  0) 最通常的就是在須要的地方調用print打印信息
  1) vars()函數調用可打印參數列表內容,結合裝飾器便可方便在調用實際函數先後打印、獲取某些信息或是執行調用其餘函數
  2) 使用pdb調試器,使用方法:python -m pdb xxx.py

9. 日誌記錄
  0) 簡單的用print打印信息至控制檯或者文件
  1) 使用標準庫中的logging模塊,提供打印級別、格式、目標、過濾器等算法

10. 優化代碼
  0) 通常狀況下是先優化算法、數據結構;
  1) 使用標準庫time模塊的time函數測量執行時間,計算時間差可粗略計算執行時間
  2) 使用標準庫timeit模塊的timeit函數可簡單測試代碼片斷的執行時間
  3) 使用標準庫timeit模塊的repeat函數可屢次測試代碼片斷
  4) 優化小tips:
    0. 優化數據結構,好比:列表解析一般比for循環本身添加元素更快
    1. 優化算法
    2. Cython用來生成C擴展,Python中使用C寫成的庫(與CPython不同,後者爲Python默認實現的解釋器)
    3. 另外某些計算的數學庫,還可使用NumPy(C語言實現)
    4. 對於某些經過分析器分析獲得的確須要提升性能的部分可使用C擴展來實現,以提升性能
    5. 使用標準庫ctypes模塊整合C語言庫的實現
    6. 使用PyPy解析器(由Python實現的解析器,內部可能用到JIT即時解析器、沙盒等),其比CPython解釋器更快

11. 源碼控制
  0) Git
  1) SVN
  2) CVS
  3) Mercurial(Hg)
  4) 其餘

12. 程序打包
  0) Distutils打包程序
  1) 結合0)使用sdist命令打包
  2) 結合0)使用bdist命令打包並建立安裝程序
  3) 結合0)使用擴展python,須要提供setup.py,build_ext命令打包
  4) 使用py2exe等第三方工具建立可執行程序,一樣也須要提供setup.py
  5) 其餘第三方打包工具vim

13. 一些不錯的Python學習資源或者其餘相關資料
  0) https://github.com/jobbole/awesome-python-books
  1) http://docs.python-guide.org/en/latest/#
  2) https://zhuanlan.zhihu.com/p/22275595
  3) https://www.zhihu.com/question/29138020
  4) https://github.com/Yixiaohan/show-me-the-code
  5) https://readthedocs.org/
  6) https://github.com/vinta/awesome-python數據結構

相關文章
相關標籤/搜索