PEP8風格和python版本區別
阿新 • • 發佈:2018-04-28
epe8編程風格python解釋器
官方Cpython
C語言開發,最廣泛的Python解釋器
IPython
一個交互式,功能增強的Cpython
PyPy
Python語言寫的Python解釋器,JIT技術,動態編譯Python代碼
Jython
Python的源碼編譯成Java的字節碼,跑在JVM上
IronPython
與Jython類似,運行在.Net平臺上的解釋器,Python代碼被編譯成.Net的字節碼
版本區別
2.X和3.X區別 語句函數化,例如print(1,2)打印出1 2,但是2.x中意思是print語句打印元組,3.x中意思是函數的兩個 參數 整數,例如1/2和1//2,3.x版本中/為自然除 3.x中raw_input重命名為input,不在使用raw_input round函數函數,在3.x中i.5的整數變為距離最近的偶數 字符串統一使用Unicode 異常的捕獲、拋出的語法改變
遵循PEP8風格指南
空白:
python中的空白(whitespace)會影響代碼的含義。python程序員使用空白的時候尤其在意,因為 它們還會影響代碼的清晰程度。 使用space(空格)來表示縮進,而不要用Tab(制表符) 和語法相關的每一層縮進都用4個空格來表示 每行的字符數不應超過79 對於占據多行的長表達式來說,除了首行之外的其余各行都應該在通常的縮進級別之上再加4個空格 文件中的函數與類之間應該用兩個空格隔開 在同一個類中,各方法之間應該用一個空格隔開 在使用下標來獲取列表元素、調用函數或給關鍵字參數賦值的時候,不要在兩旁添加空格 為變量賦值的時候,賦值符號的左側和右側應該各自寫上一個空格,而且只寫一個就好
命名:
PEP8提倡采用不同的命名風格來編寫python代碼中的各個部分,以便在閱讀代碼時可以根據這些名稱看出它們 在python語言中的角色 函數、變量及屬性應該用小寫字母來拼寫,各單詞之間以下劃線相連,例如lowercase_underscore 受保護的實例屬性,應該以單個下劃線開頭,例如_leading_underscore 私有的實例屬性,應該以兩個下劃線開頭,例如__double_leading_underscore 類與異常,應該以每個單詞首字母均大寫的形式來命名,例如CapitalizedWord 模塊級別的常量,應該全部采用大寫字母來拼寫,各單詞之間以下劃線相連,例如ALL_CAPS 類中的實例方法(instance method),應該把首個參數命名為self,以表示該對象自身 類方法(class method)的首個參數,應該命名為cls,以表示該類自身
表達式和語句:
《The Zen of python》(python之禪)中說:“每件事都應該有直白的做法,而且最好只有一種。”PEP8在
制定表達式和語法的風格時,就試著體現了這種思想。
采用內聯形式的否定詞,而不要把否定詞放在整個表達式的前面,例如,應該寫if a not b 而不是if not a is b
不要通過檢測長度的辦法(如if len(somelist) == 0)來判斷somelist是否為[]或”等空值,而不是采用if not somelist
這種寫法來判斷,它會假設:空值將自動評估為False
檢測somelist是否為[1]或‘hi‘等非空值時,也應如此,if somelist語句默認會把非空的值判斷為True
不要編寫單行的if語句、for循環、while循環及except復合語句,而是應該把這些語句分成多行來書寫,以示清晰
import語句應該總是放在文件開頭
引入模塊的時候,總是應該使用絕對名稱,而不應該根據當前模塊的路徑來使用相對名稱。例如,引入bar包中的foo模塊時,
應該完整地寫出from bar import foo,而不應該簡寫成import foo
如果一定要以相對名稱來編寫import語句,那就采用明確的寫法:from.import foo
文件中的那些import語句應該按順序劃分成三個部分,分別表示標準庫模塊、第三方模塊以及自用模塊。在每一部分,各import語句
應該按模塊的字母順序來排列
要點
當編寫python代碼時,總是應該遵循PEP8風格指南
與廣大python開發者采用同一套代碼風格,可以使項目更利於多人協作
采用一致的風格來編寫代碼,可以令後續的修改工作變得更為容易
PEP8風格和python版本區別