10個(gè)工具,幫你寫出更好的Python代碼
我每天都使用這些實(shí)用程序來使我的Python代碼可顯示。 它們是免費(fèi)且易于使用的。
編寫漂亮的Python比看起來難。 作為發(fā)布工作流程的一部分,我使用以下工具使代碼可顯示并消除可避免的錯(cuò)誤。
1. Black
在#1,我們有Black。 Black是一個(gè)毫不妥協(xié)的Python代碼重整工具。 它將確保您的代碼符合PEP 8建議。
您可以使用pip3從pypi中獲取Black:
- pip3 install --upgrade --user black
Black具有豐富的選項(xiàng),請使用黑色-h打印幫助文本。
- black -t py38 --check <yourfile>
> Black output
要使文件修復(fù)為黑色,請?jiān)谶\(yùn)行黑色時(shí)刪除—檢查選項(xiàng)。
2. eradicate
eradicate是一種方便的工具,用于查找注釋掉的代碼塊,排在第二位。 您可能不再需要它們了!
您可以使用pip3從pypi根除:
- pip3 install --upgrade --user eradicate
消除的選項(xiàng)很少,請使用消除-h打印幫助文本。
- eradicate <yourfile>
> Eradicate output
使用-i選項(xiàng)可以就地修復(fù)代碼。
3. vulture
哇,這些模塊有令人興奮的名字! vulture在#3處將發(fā)現(xiàn)無法到達(dá)的死代碼,并將其清除。 我在美化管道的早期就使用了此方法。
您可以使用pip3從pypi根除:
- pip3 install --upgrade --user vulture
Vulture有一些選項(xiàng),請使用vulture -h打印幫助文本。
- vulture <yourfile>
> Vulture ouput
4. coverage
coverage是Python代碼分析的曾祖父! 在#4,我在發(fā)布工作流程中使用覆蓋率只是為了在文件中找到無法使用assert語句執(zhí)行的無法訪問的代碼。
您可以使用pip3從pypi獲得coverage:
- pip3 install --upgrade --user coverage
coverage有很多選擇,我在這里使用它來查找未到達(dá)代碼的行號:
- coverage erase # erase previous datacoverage run --branch <yourfile> # run a branch analysis coverage report -m <yourfile> # create a report
> Coverage ouput
5. Pycodestyle
Pycodestyle是一個(gè)很棒的工具,可以用來挑選代碼格式。 它告訴您代碼與PEP-8中的建議有何不同。 因?yàn)槲彝ǔT诠ぷ髁鞒讨邢冗\(yùn)行黑色程序,所以此工具通常沒有任何報(bào)告。 在第5位,這是該列表中值得添加的內(nèi)容!
您可以使用pip3從pypi獲取pycodestyle:
- pip3 install --upgrade --user pycodestyle
Pycodestyle有很多選項(xiàng),我在這里使用它來查找未到達(dá)代碼的行號:
- pycodestyle --show-source --statistics <yourfile>
> Pycodestyle ouput
6. pylint
Pylint是此列表中必不可少的工具! 在編寫要發(fā)布給廣大讀者的代碼時(shí),我經(jīng)常使用它。
您可以使用pip3從pypi獲取pylint:
- pip3 install --upgrade --user pylint
Pylint有很多選擇。 我在這里通過可選插件使用它。 Pylint還提供了非常方便的代碼評級,非常適合游戲化:)
- pylint --include-naming-hint=y --load-plugins=pylint.extensions.mccabe,pylint.extensions.redefined_variable_type <yourfile>
> Pylint output
7. Mypy
Mypy在Python 3.8中很有用,因?yàn)樗鼨z查是否正確使用了我定義的類型提示。 如果您在Python代碼中使用類型提示,則Mypy非常有用。
您可以使用pip3從pypi獲取mypy:
- pip3 install --upgrade --user mypy
Mypy有很多選擇。 我在嚴(yán)格模式下在這里使用它,并將Python版本3.8指定為目標(biāo)。
- mypy --python-version 3.8 --strict <yourfile>
> Mypy output
8. Pyflakes
Pyflakes是發(fā)現(xiàn)錯(cuò)誤的非常強(qiáng)大的程序。 到目前為止,在pyflakes中,pyflakes很少發(fā)現(xiàn)任何新內(nèi)容,但是無論如何都不需要花費(fèi)任何錢! Pyflakes不檢查樣式,而是檢查錯(cuò)誤。
您可以使用pip3從pypi獲取pyflakes:
- pip3 install --upgrade --user pyflakes
Pyflakes實(shí)際上沒有其他選擇,它的設(shè)計(jì)非常簡單且快速。
- pyflakes <yourfile>
> Pyflakes output
9. Doctest
Doctest是Python安裝的一部分,這是很大的收獲! 如果我在代碼中使用了doctest,那么我想在發(fā)布前運(yùn)行它。 這里有一個(gè)有趣的概念:通過文檔進(jìn)行測試(文字測試)。 Doug Hellmann的這篇文章提供了一些不錯(cuò)的背景。
無需安裝Doctest。 可以從代碼文件的doctest部分中配置大多數(shù)選項(xiàng)。 在這里,我使用-v選項(xiàng)進(jìn)行詳細(xì)輸出。
- python3 -m doctest -v <yourfile>
> doctest output
10. Bandit
Bandit是一種安全測試工具。 我將其作為最后一道防線納入我的工作流程中,沒有人愿意對安全漏洞負(fù)責(zé)!
您可以使用pip3從pypi獲取強(qiáng)盜:
- pip3 install --upgrade --user bandit
強(qiáng)盜有很多選擇-它的配置非常容易。 在這里,我將其配置為跳過錯(cuò)誤B101(使用斷言),僅報(bào)告中度和高度錯(cuò)誤。
- bandit -s B101 -ll -f screen <yourfile>
11. Radon
獎(jiǎng)勵(lì)時(shí)間! Radon是一個(gè)非常不錯(cuò)的靜態(tài)代碼分析工具。 它提供了各種指標(biāo),您可能需要關(guān)注其中的一些指標(biāo)。 Radon為您的模塊,類和方法提供從A到F的評分。
您可以使用pip3從pypi獲取ra:
- pip3 install --upgrade --user radon
on有很多選擇。 我在這里運(yùn)行所有檢查,并將所有結(jié)果打印到終端。
- radon cc mi raw <yourfile> -na
> Radon output
我真的希望您喜歡這個(gè)故事! 也許您找到了可以使用的東西,或者您添加了一些有趣的東西,無論哪種情況,快樂的編碼Pythonistas都可以!
(本文翻譯自Richard Quinn的文章《10 Tools I Use to Craft Better Python Code》,參考:
https://levelup.gitconnected.com/10-tools-i-use-to-craft-better-python-code-b9a9776a7871)