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