python PEP8經常使用規範(看完你會感謝個人!)

完整的規範移步傳送門

pep8規範 官方文檔:[https://www.python.org/dev/peps/pep-0008/](https://www.python.org/dev/peps/pep-0008/)html

PEP8中文翻譯:http://www.cnblogs.com/ajianbeyourself/p/4377933.htmlpython


我的使用中經常使用的規範

1、代碼編排

1)縮進。4個空格的縮進(編輯器均可以完成此功能),不使用Tap,更不能混合使用Tap和空格。程序員

2)每行最大長度79,換行可使用反斜槓,最好使用圓括號。換行點要在操做符的後邊敲回車。api

3)類和top-level函數定義之間空兩行;類中的方法定義之間空一行;函數內邏輯無關段落之間空一行;其餘地方儘可能不要再空行。tcp

2、文檔編排

1) 模塊內容的順序:模塊說明和docstring—import—globals&constants—其餘定義。其中import部分,又按標準、三方和本身編寫順序依次排放,之間空一行。編輯器

import os
import sys

from tcp_server import online_user
from threading import currentThread
from lib import common

from interface import common_interface, admin_interface, user_interface

...

2 )不要在一句import中多個庫,好比import os, sys不推薦。函數

# 正確方式
import os
import sys
from subprocess import Popen, PIPE
# 錯誤方式
import os,sys

3) 若是採用from XX import XX引用庫,能夠省略‘module.’,都是可能出現命名衝突,這時就要採用import XX。編碼

from myclass import MyClass
from foo.bar.yourclass import YourClass

# 若是和本地名字有衝突:
import myclass
import foo.bar.yourclass

3、空行的使用

整體原則,避免沒必要要的空格。

  • 各類右括號前不要加空格。
  • 逗號、冒號、分號不要加空格。
  • 函數的左括號不要加空格。如Func(1)。
  • 序列的左括號不要加空格。如list[2]。
  • 操做符左右各加一個空格,不要爲了對齊增長空格。
  • 函數默認參數使用的賦值符左右省略空格
  • 不要將多句語句寫在同一行.
  • if/for/while語句中,即便執行語句只有一句,也必須另起一行。

4、註釋

整體原則,英文,簡明。

  • 與代碼自相矛盾的註釋比沒註釋更差。修改代碼時要優先更新註釋
  • 註釋是完整的句子。若是註釋是斷句,首字母應該大寫,除非它是小寫字母開頭的標識符(永遠不要修改標識符的大小寫)。
  • 若是註釋很短,能夠省略末尾的句號。註釋塊一般由一個或多個段落組成。段落由完整的句子構成且每一個句子應該以點號(後面要有兩個空格)結束,並注意斷詞和空格。
  • 非英語國家的程序員請用英語書寫你的註釋,除非你120%確信代碼永遠不會被不懂你的語言的人閱讀。
  • 註釋塊一般應用在代碼前,並和這些代碼有一樣的縮進。每行以 '# '(除非它是註釋內的縮進文本,注意#後面有空格)。註釋塊內的段落用僅包含單個 '#' 的行分割。
  • 慎用行內註釋(Inline Comments) 節儉使用行內註釋。 行內註釋是和語句在同一行,至少用兩個空格和語句分開。行內註釋不是必需的,重複羅嗦會令人分心。不要這樣作:
  • # 正確寫法
    x = x + 1  # Compensate for border
    # 錯誤寫法
    x = x + 1  # do nothing

    5、命名

    整體原則,新編代碼必須按下面命名風格進行,現有庫的編碼儘可能保持風格。

    • b(單個小寫字母)
    • B(單個大寫字母)
    • lowercase(小寫串)
    • lower_case_with_underscores(帶下劃線的小寫)
    • UPPERCASE(大寫串)
    • UPPER_CASE_WITH_UNDERSCORES(帶下劃線的大寫串)
    • CapitalizedWords(首字母大寫的單詞串或駝峯縮寫)
    • 類的方法第一個參數必須是self,而靜態方法第一個參數必須是cls。
    • 注意: 使用大寫縮寫時,縮寫使用大寫字母更好。故 HTTPServerError 比 HttpServerError 更好
      mixedCase(混合大小寫,第一個單詞是小寫)
    • Capitalized_Words_With_Underscores(帶下劃線,首字母大寫,醜陋

    六 、編碼建議

    1 )編碼中考慮到其餘python實現的效率等問題,好比運算符‘+’在CPython(Python)中效率很高,都是Jython中卻很是低,因此應該採用.join()的方式。
    2) 儘量使用‘is’‘is not’取代‘==’,好比if x is not None 要優於if x。
    3) 使用基於類的異常,每一個模塊或包都有本身的異常類,此異常類繼承自Exception。
    4) 異常中不要使用裸露的except,except後跟具體的exceptions。
    5 )異常中try的代碼儘量少。好比:spa

    try:
        value = collection[key]
    except KeyError:
        return key_not_found(key)
    else:
        return handle_value(value)
    要優於
    try:
        return handle_value(collection[key])
    except KeyError:
        return key_not_found(key

    6 )使用startswith() and endswith()代替切片進行序列前綴或後綴的檢查。好比:翻譯

    if foo.startswith('bar'):優於
    if foo[:3] == 'bar':

    7) 使用isinstance()比較對象的類型。好比

    if isinstance(obj, int): 優於
    if type(obj) is type(1):

    8 )判斷序列空或不空,有以下規則

    Yes: if not seq:
    if seq:

    優於

    No: if len(seq)
    if not len(seq)

    9 )字符串不要以空格收尾。

    文章轉自:http://www.javashuo.com/article/p-axeklvsk-gw.html

相關文章
相關標籤/搜索