- 細說Python編程:從入門到科學計算
- 凌峰 韓曉泉編著
- 1662字
- 2024-12-27 21:39:26
2.1 Python的基本編碼規范
很多語言都有其獨特的代碼風格,有些甚至發展成了一種編碼規范。這種規范雖然對代碼的運行沒有太多影響,但卻可以讓程序員更好地閱讀和理解代碼。
Python采用PEP 8作為編碼規范,其中PEP是Python Enhancement Proposal(Python增強建議書)的縮寫,8代表的是Python代碼的樣式指南。
我們先來看圖2-1所示的兩段功能完全相同的代碼。右側的代碼編寫格式看上去比左側的代碼更加規整,閱讀起來也更輕松、暢快,因為它遵循了基本的Python代碼編寫規范。如果在一個大的工程文件中出現較多的左邊這種編碼方式,將會給代碼閱讀者帶來極大的困難。
下面僅給讀者列出PEP 8中初學者應嚴格遵守的一些編碼規范:
(1)建議每行不超過80個字符,如果超過,建議使用小括號將多行內容隱式地連接起來,而不推薦使用反斜杠“\”進行連接。例如,如果一個字符串文本無法實現一行完全顯示,則可以使用小括號將其分開顯示,代碼如下:

圖2-1 兩段功能相同的Python代碼
當Python程序代碼太長需要換行時,可以使用括號“()”或者反斜杠“\”進行換行連接。這兩種方式都可以實現代碼換行,但使用括號“()”進行換行連接更加清晰和易于閱讀,也更符合Python的代碼風格規范:

注意,此編程規范適用于絕大多數情況,但以下兩種情況除外:①導入模塊的語句過長,②注釋里的URL。
(2)通常情況下,在運算符兩側、函數參數之間以及逗號兩側,都建議使用空格進行分隔。
(3)使用必要的空行可以增加代碼的可讀性,通常在頂級定義(如函數或類的定義)之間空兩行,而方法定義之間空一行,另外在用于分隔某些功能的位置也可以空一行。
(4)每個import語句只導入一個模塊,盡量避免一次導入多個模塊。
【例2-1】 模塊導入示例。
輸入如下代碼:
#推薦 import os #導入os模塊 import sys #導入sys模塊 #不推薦 import os,sys
(5)不要在行尾加分號,也不要用分號將兩條命令放在同一行。
(6)使用括號寧缺毋濫,除非是用于實現行連接,否則不要在返回語句或條件語句中使用括號。不過在元組兩邊使用括號是可以的。
【例2-2】 括號應用示例。
輸入如下代碼:

(7)縮進。用4個空格來縮進代碼,絕對不要使用Tab和空格混用,很容易出錯。要么垂直對齊換行的元素,要么使用4個空格的懸掛式縮進。
(8)空行。頂級定義之間空兩行,比如函數或者類定義。方法定義、類定義與第一個方法之間都應該空一行。在函數或方法中,某些地方如果覺得合適,就空一行。
(9)空格。按照標準的排版規范來使用標點兩邊的空格,括號內不要有空格。
【例2-3】 空格應用示例。
輸入如下代碼:

在二元操作符兩邊都加上一個空格,比如賦值操作符(=)、比較操作符(==、<、>、!=、<>、<=、>=、in、not in、is、is not)、布爾操作符(and、or、not)等。至于算術操作符兩邊空格的使用,需要自己認真判斷,兩側務必要保持一致。
【例2-4】 操作符應用示例。
輸入如下代碼:
# 推薦 x = 1 #操作符=兩邊有空格 # 不推薦 x=4 #操作符=兩邊沒有空格
當“=”用于指示關鍵字參數或默認參數值時,不要在其兩側使用空格。
【例2-5】 “=”應用示例。
輸入如下代碼:
# 推薦 def complex(real, imag=0.0): return magic(r=real, i=imag) # 不推薦 def complex(real, imag = 0.0): return magic(r = real, i = imag)
(10)TODO注釋。為臨時代碼使用TODO注釋是一種短期解決方案。TODO注釋應該在所有開頭處包含TODO字符串,緊跟著是用括號括起來的名字、E-mail地址或其他標識符,然后是一個可選的冒號。接著必須有一行注釋,解釋要做什么。
主要目的是為了有一個統一的TODO格式,這樣添加注釋的人就可以搜索到(并可以按需提供更多細節)。寫了TODO注釋并不保證寫的人會親自解決問題,當寫了一個TODO時需要注上名字。如果TODO是“將來做某事”的形式,那么請確保包含一個指定的日期或者一個特定的事件。
# TODO(ww@163.com): Use a "*" here for string repetition. # TODO(ZZZ) Change this to use relations.
(11)導入格式。每個導入應該獨占一行。
【例2-6】 導入格式示例。
輸入如下代碼:
# 推薦 import time #導入時間模塊 import json #導入json模塊 # 不推薦 import time, json
導入應該放在文件頂部,位于模塊注釋和文檔字符串之后,模塊全局變量和常量之前。導入應該按照從最通用到最不通用的順序分組:首先是標準庫導入,然后是第三方庫導入,最后是應用程序指定導入。
在每種分組中,應該根據每個模塊的完整路徑按字典序排序,忽略大小寫。
【例2-7】 導入格式示例匯總。
輸入如下代碼:

- Spring Boot 2實戰之旅
- JavaScript從入門到精通(微視頻精編版)
- Ext JS Data-driven Application Design
- 游戲程序設計教程
- Learning AndEngine
- C語言程序設計學習指導與習題解答
- Java實戰(第2版)
- Building Android UIs with Custom Views
- 學習OpenCV 4:基于Python的算法實戰
- Cocos2d-x by Example:Beginner's Guide(Second Edition)
- Webpack實戰:入門、進階與調優(第2版)
- 大數據時代的企業升級之道(全3冊)
- Learning Cocos2d-JS Game Development
- 高質量程序設計指南:C++/C語言
- 測試工程師Python開發實戰