Python的程式碼潔癖與格式,還有大神級程式設計師不知道的秘密

程式碼潔癖是什麼意思

Python語言規範(文章最後送上Python八榮八恥和Pycharm快捷鍵大全圖一張)

Python之父Guido推薦的規範

Python的程式碼潔癖與格式,還有大神級程式設計師不知道的秘密

縮排

習慣了java,c++之類的寬容,一開始學習python的時候,被它擺了道下馬威,寫個判斷,竟然必須要我正確用縮排格式,原來在python裡不能用括號來表示語句塊,而是靠縮排來表示。天哪剛開始的時候真的是不習慣

那麼如何縮排?

首先不要混合使用製表符和空格來縮排,因為這在跨越不同的平臺的時候,無法正常工作。縮排就用空格,4個空格為一個縮排層次,Python的縮排應該是一個優點,只是剛開始可能很不習慣,到了以後,當你看別人的Python程式碼的時候,你就會深切感受到縮排的好處。另外,Python的縮排可以在一定程度上防止大量的程式碼堆積在一起,客觀上促使形成良好的程式碼風格。

行的最大長度

周圍仍然有許多裝置被限制在每行80字元,主要是視窗限制在80個字元。因此,請將所有行限制在最大79字元,每行不超過80個字元除了兩種情況

長的匯入模組語句

註釋裡的URL

空行

頂層函式和類的定義用兩行空行分割,類內方法的定義就用單個空行分割,額外的空行可被用於(保守的)分割相關函式組成的群,在一組相關的單句中間可以省略空行。

當空行用於分割方法的定義時,在‘class’行和第一個方法定義之間也要有一個空行。在函式中使用空行時,請謹慎的用於表示一個邏輯段落。

空格

杜絕一下幾點出現空格

緊挨著圓括號,方括號和花括號的

緊挨貼在逗號,分號或冒號前的

緊貼著函式呼叫的引數列表前開式括號的

緊貼在索引或切片,開始的開式括號前的

在賦值(或其它)運算子周圍的用於和其它並排的一個以上的空格

匯入

通常應該在單獨的行中匯入(Imports),比方說:import sys,os;這樣就是錯誤的

這樣就是正確的:

import sys

import os

但是這樣是可以的:

from types import StringType, ListType

Imports通常被放置在檔案的頂部,僅在模組註釋和文件字串之後,在模組的全域性變數和常量之前。Imports應該有順序地成組安放:

標準庫的匯入(Imports )

相關的主包(major package)的匯入(即,所有的email包在隨後匯入)

特定應用的匯入(imports)

Python的程式碼潔癖與格式,還有大神級程式設計師不知道的秘密

註釋

當代碼修改時,始終優先更新註釋!註釋應該是完整的句子,如果註釋是一個短語或句子,首字母應該大寫,除非他是一個以小寫字母開頭的識別符號(永遠不要修改識別符號的大小寫)。註釋塊通常由一個或多個由完整句子構成的段落組成,每個句子應該以句號結尾。一定要用英語書寫時,斷詞和空格是可用的。非英語國家的Python程式設計師:請用英語書寫你的註釋,除非你120%的確信這些程式碼不會被其他然看懂。

註釋塊

註釋塊通常應用於跟隨著一些(或者全部)程式碼並和這些程式碼有著相同的縮排層次。註釋塊中每行以#加一個空格開始)。註釋塊內的段落以僅含單個‘#’的行分割。註釋塊上下方最好有一空行包圍(或上方兩行下方一行,對一個新函式定義段的註釋)。

行內註釋

一個行內註釋是和語句在同一行的註釋,行內註釋應該謹慎適用,行內註釋應該至少用兩個空格和語句分開,它們應該以#和單個空格開始。

文件字串

應該一直遵守編寫好的文件字串的約定。為所有公共模組,函式,類和方法編寫文件字串。文件字串對非公開的方法不是必要的,但你應該有一個描述這個方法做什麼的註釋。這個註釋應該在“def”這行後。一定注意,多行文件字串結尾的“”“應該單獨成行,

命名約定

Python庫的命名約定有點混亂,所以我們將永遠不能使之變得完全一致,不過還是有公認的命名規範的。新的模組和包(包括第三方的框架)必須符合這些標準,但對已有的庫存在不同風格的,保持內部的一致性是首選的。

命名風格

有許多不同的命名風格。以下的有助於辨認正在使用的命名風格,獨立於它們的作用。

單個小寫字母或單個大寫字母

全小寫或全大寫

有下劃線的小寫或有下劃線的大寫

有用短的特別字首將相關的名字聚合在一起的風格。這在Python中不常用,但是出於完整性要提一下,例如,os。stat()函式是返回一個元組。

命名約定

應避免的名字。永遠不要用字元‘l’,‘O’,或‘I’作為單字元的變數名。在某些字型中這些字元不能與數字1和0分辨。試著在使用‘l’時用‘L’代替。

模組名

模組應該是不含下劃線的,簡短的,小寫的名字。因為模組名被對映到檔名,有些檔案系統大小寫不敏感並且截短長名字,模組名被選為相當短是重要的,這在Unix上不是問題,但當代碼傳到Mac或Windows上就可能是個問題了。當用C或C++編寫的擴充套件模組有一個伴隨Python模組提供高層介面時,C/C++模組有下劃線前導。Python包應該是不含下劃線的,簡短的,全小寫的名字。

異常名

如果模組對所有情況定義了單個異常,它通常被叫做“error”或“Error”。似乎擴充套件的模組使用“error”比如:os。error,而Python模組通常用“Error”比如:xdrlib。Error。

函式名

函式名應該為小寫,可能用下劃線風格單詞以增加可讀性。

全域性變數

避免使用全域性變數, 用類變數來代替。 但也有一些例外:

指令碼的預設選項。

模組級常量。 例如:PI = 3。14159。 常量應該全大寫, 用下劃線連線。

有時候用全域性變數來快取值或者作為函式返回值很有用。

如果需要, 全域性變數應該僅在模組內部可用, 並透過模組級的公共函式來訪問。

總結

保證縮排的一致性

合理使用空行

適當添加註釋

建立自己的程式設計思想

多看大公司的原始碼規範

最後送上一個Python的八榮八恥

Python的程式碼潔癖與格式,還有大神級程式設計師不知道的秘密

Pycharm快捷鍵大全

Python的程式碼潔癖與格式,還有大神級程式設計師不知道的秘密