中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何編寫高質量的Python程序

發布時間:2021-10-26 17:01:05 來源:億速云 閱讀:168 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關如何編寫高質量的Python程序,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

如何編寫高質量的python程序

代碼規范

首先閱讀下面的兩份規范,并深入理解。

Python社區官方建議采用的Python編碼風格:PEP8 中文版

Google SoC 建議的 Python 編碼風格:Google Python Style Guide 中文版

寫出規范的代碼是寫出高質量代碼的***步,并且有助于培養仔細的習慣。

為了培養規范寫代碼的習慣,可以安裝flake8這個工具,它不僅可以檢查代碼風格是否符合官方建議(PEP8),而且還能找出潛在的隱患(用Pyflakes做語法分析),更逆天的是還能檢測到你有些函數寫的太復雜(代碼圈復雜度)了,更更逆天的是可以設置git commit之前必須通過這些檢查。

當然具體操作需要根據自己的項目進行一些定制,比如可以忽略E501,W293。

空白項目模版

好的開始是成功的一半,寫python代碼就從pyempty開始吧。

在github上看一下那些經典的項目,web.py,flask, pep8,他們的項目目錄都很規范,綜合借鑒了一些項目的特點,我寫了這個pyempty項目。

1.README.md 這里寫你項目的簡介,quick start等信息,雖然distutils要求這個文件沒有后綴名,但github上如果后綴是.md的話可以直接轉換成html顯示。

2.ChangeLog.txt 該文件存放程序各版本的變更信息,也有一定的格式,參考web.py的ChangeLog.txt

3.LICENES.txt 這里存放你項目使用的協議,不要編寫自己的協議。

4.requirements.txt 如果你的項目需要依賴其它的python第三方庫,在這里一行一個寫出來,可能pip install的時候能自動幫你安裝

5.setup.py 安裝腳本,后面詳細介紹

6.docs 里面存放你的項目文檔,如概要設計,詳細設計,維護文檔,pydoc自動生成的文檔等,強烈推薦大家使用MarkDown格式編寫文檔

7.src 這個目錄里存放項目模塊的主要代碼,盡量不要把模塊目錄直接放到根目錄,模塊代碼目錄可以在setup.py里指定的

8.tests 這個目錄存放所有單元測試,性能測試腳本,單元測試的文件確保以test_做前綴,這樣distutils會自動打包這些文件,并且用python -m unittest discover -s ./ -p 'test_*.py' -v 可以直接執行這些測試

單元測試

Martin Fowler:"在你不知道如何測試代碼之前,就不該編寫程序。而一旦你完成了程序,測試代碼也應該完成。除非測試成功,你不能認為你編寫出了可以工作的程序。"

我們有很多理由不寫單元測試,歸根結底是懶,雖然代碼大全上說:

大部分研究都發現,檢測比測試的成本更小。NASA軟件工程實驗室的一項研究發現,閱讀代碼每小時能夠檢測出來的缺陷要比測試高出80%左右(Basili and Selby 1987)。后來,IBM的一項研究又發現,檢查發現的一個錯誤只需要3.5個工作時,而測試則需要花費15-25個工作時(Kaplan 1995)。

但是單元測試還是讓別人相信你的代碼有很高質量的最有力證據。

好了,請詳細閱讀:

深入python3.0: 單元測試-2.x也適用

Unit testing framework 不完整中文版

文檔

敏捷開發不是提倡什么文檔也不寫,沒有文檔就沒有傳承和積累,輪崗或新人接手任務就會遇到很大的麻煩,所以我決定每個項目最少要寫以下文檔:

1.nalysis.model.md 概要設計文檔,不同于README.md文件,該文檔應該寫于項目開發之前,把項目有哪些功能,大概分幾個模塊等項目整體概述信息寫一下。

2.design.model.md 詳細設計文檔,不用太詳細,至少把項目依賴哪些東西,誰依賴這個項目,重要算法流程描述,代碼整體結構等寫出來。

3.maintain.md 維護文檔,這個我覺得最重要,你的服務都記錄哪些日志,需要監控哪些業務指標,如何重啟,有哪些配置項等,沒這些東西,你的項目很難運維。

上面這些文檔都是項目全局性的文檔,不適合寫在docstring或注視里,所以要有單獨的文檔。

打包

python有專門的模塊打包系統distutils,你可以用這套機制把你的代碼打包并分發到Pypi上,這樣任何人都可以用pip或easy_install安裝你的模塊。

如果你開發的是內部項目,還可以用mypypi架設私有的pypi,然后把項目的大的版本更新發布到內部的pypi上,配置管理人員和運維人員可以很方便的從pypi上拉取代碼安裝到測試環境或生產環境。

發布大版本的時候要給版本命名及編寫ChangeList,可以參考Git Pro的相關章節,主要記住以下幾個命令。

git tag -a v0.1 -m 'my test tag'  #給大版本命名,打Tag  git describe master #給小版本命名,Git將會返回一個字符串,由三部分組成:最近一次標定的版本號,加上自那次標定之后的提交次數,再加上一段SHA-1值  git shortlog --no-merges master --not v0.1 #生成版本簡報,ChangeList

python有自己的打包機制,所以一般不要用git archive命令。

當然大版本管理用pypi管理比較合適,小的bug fix,緊急上線等好多公司都是用git直接從生產環境拉代碼更新,因為git,svn等可以很方便的撤銷某次更新,回滾到某個位置。

看完上述內容,你們對如何編寫高質量的Python程序有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永德县| 山西省| 浪卡子县| 太仓市| 凤山市| 慈溪市| 嘉峪关市| 鱼台县| 景宁| 南雄市| 马关县| 观塘区| 兰州市| 百色市| 宜宾市| 集安市| 米泉市| 巴马| 民县| 永胜县| 白山市| 长海县| 馆陶县| 宁津县| 梁河县| 榕江县| 仙桃市| 洛川县| 京山县| 平阳县| 盐城市| 衡水市| 临沧市| 东海县| 格尔木市| 瓮安县| 滁州市| 板桥市| 桑日县| 海盐县| 四川省|