1. 程式人生 > >我的 Python 編碼規範

我的 Python 編碼規範

文章目錄

python 檔案的組成

為了便於描述,先上一個 demo,

#!/usr/bin/env python
# -*- coding: utf-8 -*-


"""通常這裡是關於本文件的說明(docstring),須以半形的句號、 問號或驚歎號結尾!

本行之前應當空一行,繼續完成關於本文件的說明
如果文件說明可以在一行內結束,結尾的三個雙引號不需要換行;否則,就要像下面這樣
"""
import os, time import datetime import math import numpy as np import xlrd, xlwt, xlutils import youth_mongodb import youth_curl BASE_PATH = r"d:\YouthGit" LOG_FILE = u"執行日誌.txt" class GameRoom(object): """對局室""" def __init__(self, name, limit=100, **kwds): """建構函式! name 對局室名字 limit 人數上限 kwds 引數字典 """
pass def craete_and_start(): """建立並啟動對局室""" pass if __name__ == '__main__': # 開啟遊戲服務 start()

Linux 平臺上,一個 python 原始碼檔案應該以下部分組成。Windows 平臺上,可以省略第一項。

  1. 直譯器宣告
  2. 編碼格式宣告
  3. 模組註釋或文件字串
  4. 模組匯入
  5. 常量和全域性變數宣告
  6. 頂級定義(函式或類定義)
  7. 執行程式碼

編碼格式宣告

通常,編碼格式宣告是必需的。如果 python 原始碼檔案沒有宣告編碼格式,python 直譯器會預設使用 ASCII 編碼,一旦原始碼檔案包含非ASCII編碼的字元,python 直譯器就會報錯。以 UTF-8 為例,以下兩種編碼格式宣告都是合乎規則的。

# -*- coding: utf-8 -*-
# coding = utf-8

我一直 UTF-8 編碼格式,喜歡使用第一種宣告方式。

Windows 平臺上,編碼格式宣告必須位於 python 檔案的第一行。Linux 平臺上,編碼格式宣告通常位於 python 檔案的第二行,第一行是 python 直譯器的路徑宣告。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

縮排

統一使用 4 個空格進行縮排。絕對不要用tab, 也不要tab和空格混用。對於行連線的情況,我一般使用4空格的懸掛式縮排。例如:

var_dict = {
    'name': 'xufive',
    'mail': '[email protected]'
}       

引號

  • 自然語言使用雙引號
  • 機器標識使用單引號
  • 正則表示式使用雙引號
  • 文件字串 (docstring) 使用三個雙引號

註釋

#號後空一格,段落件用空行分開(同樣需要#號):

    # 塊註釋
    # 塊註釋
    #
    # 塊註釋
    # 塊註釋

行內註釋,至少使用兩個空格和語句分開:

age += 1  # 年齡增加一歲

比較重要的註釋段, 使用多個等號隔開, 可以更加醒目, 突出重要性:

    server= gogame(room, options)
    
    # =====================================
    # 請勿在此處傾倒垃圾!!!
    # =====================================
    
    if __name__ == '__main__':
        server.run()

空行

  • 編碼格式宣告、模組匯入、常量和全域性變數宣告、頂級定義和執行程式碼之間空兩行
  • 頂級定義之間空兩行,方法定義之間空一行
  • 在函式或方法內部,可以在必要的地方空一行以增強節奏感,但應避免連續空行

空格

  • 在二元運算子兩邊各空一格,算術操作符兩邊的空格可靈活使用,但兩側務必要保持一致
  • 不要在逗號、分號、冒號前面加空格,但應該在它們後面加(除非在行尾)
  • 函式的引數列表中,逗號之後要有空格
  • 函式的引數列表中,預設值等號兩邊不要新增空格
  • 左括號之後,右括號之前不要加新增空格
  • 引數列表, 索引或切片的左括號前不應加空格

文件字串

文件字串是包、模組、類或函式裡的第一個語句。這些字串可以通過物件的__doc__成員被自動提取,並且被pydoc所用。文件字串的使用三重雙引號(""")。如果文件字串內容不能在一行內寫完,首行須以句號、 問號或驚歎號結尾,接一空行,結束的三重雙引號必須獨佔一行。

匯入模組

匯入總應該放在檔案頂部,位於模組註釋和文件字串之後,模組全域性變數和常量之前。匯入應該按照從最通用到最不通用的順序分組,分組之間空一行:

  1. 標準庫匯入
  2. 第三方庫匯入
  3. 應用程式指定匯入

應當避免使用以下的匯入方法:

from math import *

命名規範

  • 模組儘量使用小寫命名,首字母保持小寫,儘量不要用下劃線
  • 類名使用駝峰(CamelCase)命名風格,首字母大寫,私有類可用一個下劃線開頭
  • 函式名一律小寫,如有多個單詞,用下劃線隔開
  • 私有函式可用一個下劃線開頭
  • 變數名儘量小寫, 如有多個單詞,用下劃線隔開
  • 常量採用全大寫,如有多個單詞,使用下劃線隔開