一、為什么Python代碼要寫得美觀而明確
寫美觀和明確的代碼可以幫助更好地理解代碼的意圖和功能,使得以后的維護和更新工作變得更加容易。此外,美觀和明確的代碼也可以讓其他人更容易閱讀和理解你的代碼,這對于團隊協(xié)作或代碼復用來說非常重要。最后,美觀和明確的代碼也可以幫助降低出錯的概率,因為編寫易讀的代碼可以使你更容易發(fā)現錯誤或潛在的問題。
所以,不僅僅是python,其他語言也是一樣。這是一個態(tài)度,也是一個提高自己的方法,是一個循序漸進的而過程。
核心準則
縮進
優(yōu)選使用4個空格。
目前幾乎所有的IDE都是默認tab轉為4個空格,沒有大問題。
行的最大長度
79個字符。
曾經筆者認為這是個“過時”的建議,目前做開發(fā)基本都是大屏幕,寫代碼全屏的時候編輯器足以容納120字符一行或者更長。但是如果要在web上比較兩次提交的代碼差異,顯然是會導致代碼換行,或者如果左右滑動,增加了比較的難度,在多年實踐之后(2016-2020),所以目前還是使用建議的最大行長度。
導入
導入位于文件頂部,在文件注釋之后。 導入通常是單獨一行。
# Correct:
import os
import sys
# Wrong:
import sys, os
或者這樣也是可以的:
# Correct:
from subprocess import Popen, PIPE
導入應該按照以下順序分組:
標準庫導入相關的第三方導入特定的本地應用/庫導入 在每個導入組之間放一行空行。 推薦絕對導入,因為它們更易讀;處理復雜包布局時明確的相對導入可以用來替代絕對導入,因絕對導入過于冗長。此外,根據實踐經驗,建議移除所有不必要的imports。
其他如有細節(jié)問題,查看文檔
導入這部分,通過Python庫isort可以完美解決(vscode默認使用isort),在vscode中isort的默認參數便完全符合上面的編碼規(guī)范,這里介紹筆者一些個人的風格設置,通過設置isort的參數可以實現:
當from .. import …超過行長度限制時,重新起一行:–sl/–force-single-line-imports強制通過包名排序:–fss/–force-sort-within-sections并可設置為保存時自動排序imports,在vscode中配置為:
{
??? “editor.codeActionsOnSave”: {
??????? “source.organizeImports”: true
??? },
??? “python.sortImports.args”: [
??????? “–force-sort-within-sections”,
??????? “–force-single-line-imports”
??? ],
}
4 注釋
切忌注釋和代碼不一致!!,這比沒有注釋更讓人抓狂。 主要遵守以下要點:
修改代碼時,優(yōu)先修改注釋;注釋應該是完整的句子。所以名列前茅個單詞首字母必須大寫,除非是名列前茅個單詞是小寫字母開頭的標識符;短注釋可以不加句號結尾,完整句子的注釋必須要句號結尾;注釋每行以一個#加一個空格開頭;塊注釋需要使用相同級別的縮進;行內注釋則必須用至少兩個空格和代碼隔開;盡量讓你的代碼“會說話”,不寫不必要的注釋。文檔字符串(a.k.a. “docstrings”)
為所有公共模塊,函數,類和方法書寫文檔字符串。細節(jié)可以查看PEP 257。
對于docstrings,CLion有很好的支持,vscode可以通過插件實現Python Docstring Generator:
插件管理器搜索Python Docstring Generator安裝即可使用方法很簡單,在函數名后換行快捷鍵Ctrl+Shift+2即可,或者輸入”””敲換行時也會自動添加該插件默認使用的風格是Google,通過對比一些開源算法庫的文檔,使用Google風格的比如TensorFlow,PyTorch,其文檔的可讀性并不如使用numpy風格的NumPy和SciPy,因此建議使用numpy風格。
延伸閱讀:
二、python的可擴展性
可擴展性是屬于 Python 的其他特性之一。在必要時,可以用其他語言編寫 Python 代碼的一部分,例如 C++。因此,Python 是一種可擴展的語言,這意味著它可以被擴展到其他語言。Python 可擴展的特性是指 Python 的部分代碼可以用 C 或 C++ 來編寫。這并不能增強語言 (語法、結構等等),但是它可以讓你把 Python 和其他語言開發(fā)的庫連接起來。這就是說,你可以將以其他語言編寫的代碼包含在你的 Python 源代碼中。