如何用 PEP 8 編寫優雅的 Python 程式碼!
教你怎麼編寫符合規範的Python程式碼,文章較長,請準備好咖啡
- 原文地址:How to Write Beautiful Python Code With PEP 8
- 作者:Jasmine Finer
- 翻譯:howie6879
目錄如下:
- Why We Need PEP 8
- Naming Conventions
- Naming Styles
- How to Choose Names
- Code Layout
- Blank Lines
- Maximum Line Length and Line Breaking
- Indentation
- Tabs vs. Spaces
- Indentation Following Line Breaks
- Where to Put the Closing Brace
- Comments
- Block Comments
- Inline Comments
- Documentation Strings
- Whitespace in Expressions and Statements
- Whitespace Around Binary Operators
- When to Avoid Adding Whitespace
- Programming Recommendations
- When to Ignore PEP 8
- Tips and Tricks to Help Ensure Your Code Follows PEP 8
- Linters
- Autoformatters
- Conclusion
PEP8 也讀作 PEP8 或者 PEP-8 ,它是一份提供如何編寫Python程式碼指南和最佳實踐的文件,由 GuidovanRossum,BarryWarsaw,NickCoghlan 在2001年完成。 PEP8 主要注重於提高 Python 程式碼的可讀性和一致性。
PEP 全稱為: PythonEnhancementProposal ,一個PEP是一份文件,它描述了為Python提出的新特性以及為社群編寫的Python方面的文件,比如設計和風格。
本教程概述了 PEP8 中列出的關鍵指南,它的目標讀者是初級到中級程式設計師,因此我沒有涉及一些最高階的主題。不過你可以通過閱讀完整的PEP 8 — Style Guide for Python Code | Python.org文件來學習高階主題。
在本教程結束時,你將能夠:
- 編寫遵從 PEP8 規範的程式碼
- 理解 PEP8 中列出的指導原則背後的原因
- 設定你的開發環境,以便開始編寫符合 PEP8 標準的Python程式碼
Why We Need PEP 8
可讀性很重要
進群:960410445 即可獲取驚喜大禮包!
PEP8 規範存在的目的在於提高Python程式碼的可讀性,但為什麼可讀性如此重要?為什麼編寫具有可讀性的程式碼是Python語言的指導原則之一?
正如 GuidovanRossum 所說:”程式碼閱讀的頻率遠遠高於編寫的頻率“。你可能花費幾分鐘或一整天時間編寫一段程式碼來處理使用者身份驗證,一旦你寫完它,你就再也不會重寫一次,但是你肯定會再讀一次,這段程式碼可能仍然是你正在進行的專案的一部分。每次你回到那個程式碼檔案,你必須要記住那部分程式碼是做什麼的以及你為什麼要寫它,所以可讀性很重要。
如果你是Python新手,在你編寫程式碼之後的幾天或幾周內還要你記住程式碼片段的含義可能有點困難。如果你遵循 PEP8 標準,你可以很確定你對你的變數命名得很好,你會知道你添加了足夠的空格,因此更容易遵循程式碼中的邏輯步驟,你還可以對你的程式碼進行很好的註釋,所有的這些都意味著你的程式碼具有更高的可讀性,也更容易再次閱讀。作為初學者,遵循 PEP8 的規則可以使學習Python成為更愉快的任務。
如果你正在找工作,那麼遵循 PEP8 標準尤為重要,編寫清晰可讀性高的程式碼更會突出你的專業性,這將會側面告訴你的老闆,你瞭解怎麼很好地構建你的程式碼。
如果你擁有很多編寫Python程式碼的經驗,然後你可能需要和其他人協作開發,編寫可讀性高的程式碼在這裡至關重要,其他人可能此前從未看過你這樣風格的程式碼,他必須重新閱讀且理解你的程式碼風格,如果擁有你遵循和認可的指南將使其他人更容易閱讀你的程式碼。
Naming Conventions
明瞭勝於晦澀
當你編寫Python程式碼的時候,你必須對很多東西命名:變數、函式、類、包等等,選擇合理的名字將為你節省時間和精力。你將能夠從名稱中找出某個變數,函式或類所代表的含義。你還要避免使用不恰當的名稱,因為這樣可能會導致難以除錯的錯誤。
::Note: 永遠不要使用 i,o,或 I 單字母名稱,因為這些名稱可能會被誤認為1和0,具體取決於字型:::
Naming Styles
下表概述了Python程式碼中的一些常見命名風格以及何時應該使用它們:
這些是一些常見的命名約定以及如何使用它們的示例,但是為了編寫高可讀性程式碼,你仍然需要謹慎選擇字母和單詞。除了在程式碼中選擇正確的命名風格外,還必須仔細選擇名稱,以下是有關如何儘可能有效地執行此操作的一些指示。
How to Choose Names
為變數、函式、類等選擇名稱是一項挑戰,在編寫程式碼時,你應該在命名選擇中加入相當多的思考,因為這樣可以使程式碼更具可讀性。在Python中為物件命名的最佳方法是使用描述性名稱來清楚表明物件所代表的內容。
對變數進行命名時,你可能會選擇簡單的單字母小寫名稱,例如x。但是,除非你使用x作為數學函式的引數,否則並不清楚x代表什麼。想象下你正在將一個人的名字儲存為字串,並且你希望使用字串切片來格式化其名稱。你最終會得到這樣的東西:
上面程式碼可以很好的執行,但是你必須追蹤 x,y,z 表示的含義,這樣也會讓你的程式碼協作者產生困擾,更明確的名稱選擇將是這樣的:
同樣,為了減少輸入的數量,在選擇名稱時使用單詞縮寫也是很有誘惑力的,在下面的例子中,我定義了一個函式 db() ,它接受一個引數x並將其加倍返回:
乍一看,這似乎是一個明智的選擇。 db() 很容易看成是 double 的縮寫,但想象一下,幾天後再看這段程式碼,你可能已經忘記了你試圖通過這個函式實現的目標是什麼,這將使猜測它原本的含義變得困難。
下面的例子就比較清晰,如果你幾天後再看這段程式碼,你仍然可以閱讀並理解此函式的目標:
同樣的理念適用於Python中的所有其他資料型別和物件,儘量一直使用最簡潔且最具描述性的名稱。
Code Layout
優美勝於醜陋
如何對程式碼佈局對於提升它的可讀性有很大的作用。在本節中,你將學習如何新增垂直空格以提高程式碼的可讀性。你還將學習如何處理 PEP8 中建議的79字元行限制。
Blank Lines
垂直空格或空行可以極大地提高程式碼的可讀性,聚集在一起的程式碼可能是壓倒性的且難以閱讀,同樣,程式碼中的空行太多會使其看起來非常稀疏,讀者可能需要進行沒必要的滾動,以下是關於如何使用垂直空白的三個關鍵指南。
用兩個空行包圍頂級函式和類,頂級函式和類應該是完全自包含的,並處理單獨的功能,在它們周圍放置額外的垂直空間是有意義的,因此很明顯它們是分開的:
用一個空行包圍類中的方法定義,在一個類中,函式都彼此有聯絡,最好只在它們之間留一行:
在函式內部謹慎地使用空行,以顯示清晰的步驟,有時候一個複雜的函式必須在return語句之前完成好幾個步驟,為了幫助閱讀者理解函式裡面的邏輯,在每個步驟之間留一個空行會很有幫助。
在下面的示例中,有一個計算列表方差的函式,這個問題可以分為兩個步驟,所以我在每個步驟之間留下了一個空行,在return語句之前還有一個空行。這有助於讀者清楚地看到返回的內容:
如果仔細地使用垂直空格,可以大大提高程式碼的可讀性,它有助於讀者直觀地理解你的程式碼如何分成幾個部分,以及這些部分如何相互關聯。
Maximum Line Length and Line Breaking
PEP8 建議每行程式碼限制在79個字元以內,這是因為它允許多個檔案並排開啟,同時也避免了換行,當然,將語句保持在79個字元以內並不總是可行的。 PEP8 概述了允許語句在多行上執行的方法。
如果程式碼包含在括號、方括號或大括號中,Python將會認為程式碼是一行的:
如果不能用上述的方式進行每行程式碼延續,那麼可以使用反斜槓代替換行:
但是,如果可以使用第一個方案,那麼就應該儘量這樣做。
如果需要在二元運算子周圍做換行操作,例如 + 和 * ,那麼需要將換行操作放在前面,這條規則源於數學,數學家同意在二元運算子之前換行以可提高可讀性,比較以下兩個例子。
下面是在二元運算子之前換行的示例:
你可以馬上反應過來哪些變數正在相加後者相減,因為操作符緊鄰著變數。
現在,讓我們看一個在二元運算子之後換行的示例:
在這裡,很難看出哪個變數被加,哪個變數被減。
在二元運算子之前換行可以讓程式碼更加具有可讀性,所 PEP8 鼓勵這種方式。在二元運算子之後換行的程式碼仍然符合 PEP8 ,但是,我們鼓勵你在二元運算子之前換行。
Indentation
當存在多種可能,不要嘗試去猜測
而是儘量找一種,最好是唯一一種明顯的解決方案(如果不確定,就用窮舉法)
縮排,即前導空格,在Python中非常重要。Python中程式碼行的縮排級別決定了語句如何組合在一起。
思考下面的例子:
縮排的print語句使得Python明白只有if語句返回True才能繼續執行它,同樣的縮排適用於告訴 Python 在呼叫函式時要執行哪些程式碼,或者哪些程式碼屬於給定的類。
PEP8 制定的關鍵縮排規則如下:
- 使用4個連續的空格來表示縮排。
- 選擇空格而不是製表符(Tab)。
Tabs vs. Spaces
如同上述所說,當你進行縮排的時候,你最好用空格代替製表符,你可以直接對文字編輯器的設定進行調整,當你按 Tab 的時候轉換為4個空格的輸出
如果你使用的是Python 2並且混合使用了製表符和空格來縮排程式碼,當你執行的時候可能不會看見錯誤。為了幫助你檢查一致性,可以在從命令列執行Python 2程式碼時新增 -t 標誌。當你不一致地使用製表符和空格時,直譯器將會發出警告:
相反,如果你使用 -tt 標誌,直譯器將發出錯誤而不是警告,使用此方法的好處是直譯器會告訴你縮排不一致的位置在哪裡:
Python 3不允許製表符和空格混合使用,因此,如果你使用的是Python3,直譯器將會自動報錯:
你可以在編寫Python程式碼中使用製表符或空格來表示縮排,但是,如果你使用的是Python 3,則必須與你的選擇保持一致,否則你的程式碼將不能執行。 PEP8 推薦你總是使用4個連續的空格來表示縮排。
Indentation Following Line Breaks
當你為了保證每行在79個字元以下而進行換行時,使用縮排來提高程式碼可讀性是很有用的,它允許讀者區分兩行程式碼和跨越兩行的單行程式碼,這裡有兩種縮排風格供你選擇。
第一個是將縮排塊與開始的分隔符對齊:
有時你會發現只需要4個空格就可以與開口分隔符對齊,這種情況經常發生在 if 語句中,如果跨多行的 if++( 構成4個字元,那麼就會發生這種情況,在這種情況下,很難確定 if 語句中巢狀的程式碼塊從哪裡開始:
在這種情況下, PEP8 提供了兩種替代方案來幫助你提高程式碼可讀性:
- 在最後的條件後添加註釋,由於大多數編輯器中有語法高亮顯示,這可以將條件與巢狀程式碼分開:
- 在換行中新增額外的縮排:
換行符後的另一種縮排方式是 懸掛縮排(hanging indent) ,這是一個印刷術語,意思是段落或語句中除第一行以外的每一行都縮排,可以使用懸掛縮排直觀地表示一行程式碼的延續。下面是一個例子:
::Note:當你正在使用hanging indent時,第一行不得有任何引數。以下示例不符合PEP 8::
使用 hanging indent 時,可以新增額外的縮排以區分連續行與函式內包含的程式碼。下面是一個難以閱讀的例子,因為函式裡面的程式碼和連續行的縮排等級是相同的:
相反,最好在一行程式碼換行後使用雙縮排,這有助於你區分函式引數和函式內部構造,從而提高可讀性:
當你編寫遵循 PEP8 規範程式碼的時候,每行字元在79之內的規則使你必須強制換行,為了提高可讀性,你應該縮排一行,以表明它是一個連續的行。做到這一點有兩種方法,第一種是將縮排的塊與開始的分隔符對齊,第二種是使用懸掛縮排,在換行之後,你可以自由選擇使用哪種方法進行縮排。
Where to Put the Closing Brace
一行程式碼的換行操作允許你在括號、方括號或大括號後面斷開一行,這會造成一個問題,就是很容易忘記關閉括號,但重要的是要把它放在合理的地方,否則,它會使讀者感到困惑, Pep8 為隱含的行延續中的結束括號的位置提供了兩個選項:
- 使用前一行的第一個非空白字元排列右括號:
- 將結束括號與宣告行的第一個字元對齊:
你可以自由地選擇任何一種方式,但是,和之前說的一樣,一致性是關鍵,所以之後的程式碼就要堅持使用你選擇的某一個方案以保持程式碼一致性。
Comments
如果你無法向人描述你的方案,那肯定不是一個好方案;反之亦然
你應該使用註釋來說明編寫的程式碼,這對記錄你的程式碼非常重要,這樣你的任何協作者都可以理解它。當你或者其他人閱讀程式碼註釋,他們應該能夠很容易地理解註釋所應用的程式碼,以及它如何與程式碼的其餘部分相匹配。
下面是一些你為你程式碼作註釋時候需要注意的關鍵點:
- 將註釋和文件字串的行長限制為72個字元
- 使用完整的句子,以大寫字母開頭
- 註釋隨著程式碼的更新而更新
Block Comments
使用塊註釋來記錄一小部分程式碼,當你必須編寫幾行程式碼來執行單個操作時,它們非常有用,例如從檔案匯入資料或更新資料庫記錄。其重要性在於它們可以幫助其他人理解給定程式碼塊的用途和功能。
PEP8 提供以下規則來編寫註釋:
- 將塊註釋縮排到其描述程式碼的相同級別
- 用#加上一個空格開始每一行的註釋
- 用包含單個#的行分隔段落
這是一個解釋for迴圈功能的塊註釋,請注意,句子為了每行保留79個字元行限制進行了換行:
有時,如果程式碼技術性較強,那麼有必要在塊註釋中使用多個段落:
如果你不確定什麼樣的註釋型別是合適的,那麼塊註釋通常是正確的選擇。請儘量在你的程式碼中添加註釋,一旦你對程式碼進行了更新也請務必對註釋進行更新!
Inline Comments
行內註釋對單個語句中的一段程式碼進行了解釋,這有助於提醒你或者其他人為什麼某行程式碼是必須的,以下是 PEP8 對他們的評價:
- 謹慎使用行內註釋
- 在與它們引用的語句相同的行上寫入行內註釋
- 從語句中用兩個或多個空格分隔行內註釋
- 像塊註釋那樣,用#加上一個空格開始每一行的註釋
- 不要用它們來解釋明顯的問題
下面是一個行內註釋的例子:
有時,行內註釋似乎是必要的,但是你可以使用更好的命名約定,下面是一個例子:
這裡,行內註釋為變數提供了額外的說明資訊,然而用 x 作為一個人名的變數名不是很好的做法,如果你對變數重新命名,是可以不用使用行內註釋的:
最後,像這樣的行內註釋是不好的做法,因為它們陳述了顯而易見且雜亂的程式碼:
行內註釋比塊註釋更具體,並且容易在非必要時候新增它們,這會導致程式碼混亂。除非你確定需要行內註釋,不然使用塊註釋避免程式碼混亂的問題比較好,堅持使用塊註釋,可以讓你的程式碼更加符合 PEP8 的標準。
Documentation Strings
Documentationstrings 或者說 docstrings , 是用雙引號(”””)或單引號(’’’)括起來的字串,它們出現在任何函式,類,方法或模組的第一行,你可以使用它們來解釋和記錄特定的程式碼塊。這裡有一個對應的 PEP ,見PEP 257,但你可以從本節閱讀總結的經驗:
使用文件字串的重要規則如下:
- 文件字串兩邊都有三個雙引號環繞,比如: """This is a docstring"""
- 為所有公共模組,函式,類和方法編寫 docstrings
- 使用單行 """ 結束多行 docstring
- 對於單行 docstrings ,保持 """ 在同一行:
想要了解更多,請閱讀Documenting Python Code: A Complete Guide – Real Python
Whitespace in Expressions and Statements
間隔勝於緊湊
正確使用空格在表示式和語句中非常有用,如果程式碼中沒有足夠的空格,那麼程式碼應該很難閱讀,因為他們都湊在一起,如果空格太多,又會難以在視覺上將完整的語句聯絡出來。
Whitespace Around Binary Operators
在進行以下二元操作的時候,應該在其兩邊加上空格:
- 分配操作(=, +=, -=, 等等)
- 比較(==, !=, >, <. >=, <=)和 (is, is not, in, not in)
- 布林(and, not, or)
::Note:當 = 是為一個函式的引數賦值時候就不用在兩邊加空格::
如果語句中有多個運算子,則在每個運算子前後新增單個空格可能會讓人感到困惑,相反,最好只在優先順序最低的運算子周圍新增空格,尤其是在執行數學運算時。以下是幾個例子:
還可以將此應用於有多個條件的if語句:
在上面的示例中, and 操作具有最低優先順序,因此,可以下面這樣更清楚地表達if語句:
你可以自由選擇哪個方式更清晰,但需要注意的是你必須在運算子的任何一側使用相同數量的空格。
下面的例子是不被允許的:
在切片中,冒號作為二元運算子。因此,上一節中概述的規則也適用於此,並且其任何一方都應該有相同數量的空白,以下列表切片示例是合法的:
總之,你應該使用空格包圍大多數運算子,但是,此規則有一些注意事項,例如在函式引數中或在一個語句中組合多個運算子時。
When to Avoid Adding Whitespace
在某些情況下,新增空格可能會使程式碼難以閱讀,太多的空格會使程式碼過於稀疏而難以理解。 PEP8 概述了一些非常明顯的例子應當不使用空格
在一行的末尾避免新增空格是最重要的地方,這稱為 trailing whitespace ,它是不可見的,可能產生難以追蹤的錯誤。
以下列表概述了一些應避免新增空格的情況:
- 直接放在括號、方括號或大括號內:
- 在逗號,分號或冒號之前:
- 在開啟函式呼叫的引數列表的開括號之前:
- 在開始索引或切片的開括號之前:
- 在尾隨逗號和右括號之間:
- 對齊賦值運算子:
確保你的程式碼中沒有尾隨空格。 在其他情況下, PEP8 不鼓勵新增額外的空格,例如立直接放在括號、方括號或大括號內,以及逗號和冒號之前。 為了對齊操作符,也不應該新增額外的空格。
Programming Recommendations
簡潔勝於複雜
你經常會發現有幾種方法可以在 Python (以及任何其他程式語言)中執行類似的操作。在本節中,你將看到 PEP8 提供的一些建議用來消除這種歧義並且保持一致性。
不要使用等價運算子將布林值與True或False進行比較,你經常需要檢查布林值是True還是False,當這樣操作時,請使用如下所示的語句直觀地執行此操作:
這裡不需要使用等價運算子 == , bool只能取值True或False,按照下面這樣寫就行了:
這種在if語句中使用bool的方式可以寫更少的程式碼並且更加簡單,因此 PEP8 鼓勵使用這種方式。
在if語句中判斷列表是否為空,當你希望確定列表是否為空時,你通常會判斷列表的長度,如果列表為空,那麼長度為0,在if語句中使用時等於False,這裡有一個例子:
但是,在Python中,任何空列表,字串或元組都可以當為False的。因此,我們可以提出一個更簡單的替代方案:
兩種方法都可以判斷列表是否為空,但是第二種方式更加簡潔,因此 PEP8 鼓勵使用這種方式。
在if語句中,使用 is not 比 no ... is in 好,當你需要確定一個變數是否被賦值,這裡有兩種方法,第一種是評估if語句中的x是不是為非 None ,如下所示:
第二種方案是現在if語句中判斷x是不是 None ,再進行 not 操作:
兩種方法都可以判斷x是否為 None ,但是第一種方式更加簡單,因此 PEP8 鼓勵使用這種方式。
當你想表達if x is not None時,不要使用if x,有時候,你可能擁有一個函式帶有預設值為 None 的引數,當對引數 arg 檢查是否帶有不同的值的時候經常會犯下面這樣的錯誤:
此程式碼檢查的是 arg 是否為真,但相對的你要的是檢查是否為 None ,所以下面這樣寫比較好:
上面的錯誤會使得判斷是否為真和 notNone 相等,你可以設定 arg=[] ,如上所述,空列表在Python中被認為是 False ,因此,儘管引數被宣告為 [] ,但條件並沒有滿足,因此函式裡面的程式碼 if 宣告並不能被執行。
用.startswith() 和.endswith()代替切片,如果你想檢查一段字串的字首或者字尾是否帶有字串 cat ,這看起來使用列表切片似乎比較明智,但是,列表切片容易出錯,您必須對字首或字尾中的字元數進行硬編碼,對於那些不太熟悉Python列表切片的人來說很難看清楚你想要實現的目的:
然而,還是使用 .startswith(): 可讀性比較高:
同樣的,當你想檢查字串字尾也是同樣的原理,下面的示例概述瞭如何檢查字串是否以jpg結尾:
雖然結果是正確的,但是符號有點複雜且難以閱讀,與之相對的,你可以用 .endswith() 實現,看下面例子:
就像上面的列出的程式設計建議,我們目標是編寫清晰以及可讀性較高的程式碼,在Python中,有許多不同的方法可以實現相同的結果,因此有關選擇哪種方法的指南很有幫助。
When to Ignore PEP 8
什麼時候忽略PEP 8?對於這個問題有個簡短的答案,那就是永遠不會
如果你嚴格遵循 PEP 8,就可以保證您擁有乾淨、專業和可讀的程式碼。 這對你以及合作者和潛在僱主都有好處。
但是,PEP 8中的一些指導方針在以下例項中不適用:
- 如果遵守PEP 8將破壞與現有軟體的相容性
- 如果你正在從事的工作的程式碼與 PEP 8不一致
- 如果程式碼需要與舊版本的Python版本保持相容
Tips and Tricks to Help Ensure Your Code Follows PEP 8
想要你的程式碼相容 PEP8 ,那你得記住不少規範,在開發程式碼時,記住所有這些規則可能是一項艱鉅的任務。特別是對老專案進行更新以相容 PEP8 時,幸運的是,有些工具可以幫助你加快這一過程,這裡有兩個工具可以幫你強制相容 PEP8 規範: linters 和 autoformatters 。
Linters
Linters是分析程式碼和標記錯誤的程式,他們可以為你如何修復錯誤提供建議,在作為文字編輯器的擴充套件安裝時,Linters特別有用,因為它們標記了你程式設計時的錯誤和格式問題。在本節中,您將看到Linters程式是如何工作的大綱,最後還有文字編輯器擴充套件的連結。
對於Python程式碼,最好的linters如下:
- pycodestyle是一個根據 PEP8 中的某些風格約定來檢查Python程式碼的工具
使用以下命令在終端中使用 pycodestyle :
- flake8是一個結合了偵錯程式, pyflakes 和 pycodestyle 的工具
使用以下命令在終端中使用 pycodestyle :
還顯示了輸出的示例。
::Note:額外輸出的一行表示語法錯誤。::
這些也可用作Atom,Sublime Text,Visual Studio Code和VIM的擴充套件。您還可以找到有關為Python開發設定Sublime Text和VIM的指南,以及Real Python中一些流行的文字編輯器的概述。
Autoformatters
Autoformatters 可以重構你的程式碼以使其符合 PEP8 規範,像black程式就可以根據 PEP8 規範重新格式化你的程式碼,一個很大的區別是它將行長度限制為88個字元,而不是79個字元。但是,您可以通過新增命令列標誌來覆蓋它,如下面的示例所示。
可以使用pip安裝black,它需要 Python3.6+ :
它可以通過命令列執行,就像Linters一樣。假設你從名為code.py裡面不符合PEP 8規範的程式碼開始:
你可以在命令列中執行如下程式碼:
code.py 將會被重新格式化為如下所示:
如果你想要更改行長度限制,則可以使用 —line-length 標誌:
另外兩個 autoformatters 分別為 autopep8 和 yapf ,它們和 black 操作類似。
另一個 RealPython 教程,由 AlexandervanTol 編寫的Python Code Quality: Tools & Best Practices詳細解釋瞭如何使用這些工具。
Conclusion
你現在已經知道如何使用 PEP8 中的指南編寫高質量,可讀高的Python程式碼,雖然指南看起來很迂腐,但遵循它們可以真正改善你的程式碼,特別是在與潛在僱主或合作者共享程式碼時。
在本教程中你瞭解到:
- 什麼是 PEP8 以及其存在的原因
- 為什麼你應該編寫符合 PEP8 標準的程式碼
- 如何編寫符合 PEP8 的程式碼
除此之外,您還了解了如何使用linters和autoformatters根據 PEP8 指南檢查程式碼。
如果你想了解更多,可以閱讀full documentation或者瀏覽pep8.org,這些教程不僅提供了類似的資訊同時也提供了很好的格式讓你閱讀,在這些文件中,您將找到本教程未涉及的其餘 PEP8 指南。