pep8編碼規范


文檔地址

  1. pep8(python代碼樣式規范)文檔地址(中文)
  2. pep257(Python文檔字符串相關的約定)文檔地址
  3. pep20 (python的禪宗)文檔地址

代碼樣式規范 (pep8)

1.行縮進:tab(4個空格)

  • 隱式行連接縮進

    • 1、對齊
    • 2、層級縮進
    • 3、\
    # 對齊縮進
    # 對齊縮進
    foo = dict(name="MuSen", age=18,
               gender="男", height="180")
    
    
    # 層級縮進(為了區別應當再縮進四格)
    def fun_add(
            a, b=200,
            c=1000, d=2000):
        return a, b, c, d
    
    
    # 行連線 \
    with open("txt1.txt") as f1,\
         open("txt2.txt") as f2:
        f1.read()
        f2.read()
    

2. 單行字符限制

  • 所有行限制的最大字符數為79個
  • 沒有結構化限制的大塊文本(文檔字符或者注釋),每行最大字符數限制在72

3. 空行

  • 頂級函數和類的定於直接有兩行空行
  • 類內部的函數定義之間有一個空行

4. 源文件編碼方式

  • Python核心發布中的的代碼應該始終UTF-8(Python2中默認是ASCII編碼)
  • Python3中不應該有編碼聲明

5. 注釋

1、與代碼組矛盾的注釋比沒有注釋還糟,當代碼式,有限更新對應的的注釋!

2、如果注釋很短,結尾句號可以省略。塊只是一般有完整句子的一個或多個段落組成,並且每句話結束有個句號。在句尾結束的時候應該使用兩個空格

3、在非英語國家的Python程序員,請使用英文寫注釋,除非你120%的確信你的代碼不會被其他語言的人閱讀----忽略

  • 行內注釋

    • 行內注釋和代碼至少要有兩個空格分離
    • 注釋由#和一個空格開始,有節制的使用
    a = 6
    print(a)  # 打印a
    
  • 塊注釋

    • 塊注釋通常使用與跟隨他們的某些(或全部)代碼,並鎖緊到與代碼相同的級別。
    • 塊注釋的每一行開頭使用一個#和一個空格(除非塊注釋內部縮進文本)
    • 塊注釋的段落通過只有一個#的空行分割。
    def add_num(a, b, c):
        # 此函數的功能式返回三個數字和
        # 
        # 簡單明了
        return a + b + c
    

6. 文檔注釋PEP 257描述寫出的文檔相關的約定

  • 文檔注釋應當使用:三個雙引號 ""xxxx """來包裹
  • 要為所有的公共的模塊、函數、類便攜文檔說明
  • 非公共的方法沒有必要添加文檔注釋,但應該有一個描述方法具體作用的注釋,這個注釋應該在def那一行之后
def add_num(a, b, c):
    '''
    這是一個計算的方法
            
    :param a: int
    :param b: int
    :param c: int
    :return:
    '''
    return a + b + c
  • 單行文檔注釋:"""數值""" 引號文字同一行
  • 多行文檔注釋:多行文檔字符串由一個摘要組成,就像一行文檔字符串,后跟一個空行,后面是更詳細的描述,多行文檔說明使用結尾三引號獨立 一行
  • 提取文檔的注釋:對象的__doc__屬性
import requests

print(requests.__doc__)

7. 模塊和包相關規范

  • 位置:導入文娛文件的頂部,在文檔注釋之后,在模塊全局變量之前

  • 導入順序

    • 1、標准庫導入
    • 2、相關的第三方庫導入
    • 3、特定本地應用庫導入
  • 模塊的內置屬性(名字前后雙下划線)

    • 例如:__all__*,__author__,__version__,應該放在模塊的文檔注釋之后,任意import,from 語句之前
    """
    第一先文檔注釋
    第二__all__雙下滑先
    第三 import
    第四 全局變量
    """
    __all__ = {}
    
    import requests
    
    a = 5
    
    
    # 推薦
    import os
    import requests
    from subprocess import Popen, PIPE
    
    # 不推薦
    from requests import get
    import requests,os
    from requests import *  # 中毒禁忌
    
    

8. 命名規范

  • 變量命名
    • 永遠不要用字母"l""(小寫的L)"O"(大寫的O)作為單字符變量
    • 在某些字體里面無法和數字0和1區分
  • 函數命名
    • 函數名應該小寫,用下滑線分割
    • 大小寫混合僅在為了兼容已存在的代碼的風格使用,保持向后兼容性
  • 類命名
    • 類名一般使用首字母大寫的約定
    • 在接口被文檔化並且要被用於調用的情況下么可以使用函數的命名風格代替
    • 對於內置的變量命名有一個單獨的約定:大部分內置變量是單個單詞(或者兩個單詞連接在一起),首字符大寫的命名只用於異常名或者內部變量
  • 類里面函數和參數
    • 始終要將self作為實例方法的第一個參數
    • 始終要將cls作為類靜態方法的第一個參數
    • 如果函數的參數名和已有的關鍵詞沖突,在最后單一下划線比縮寫或者隨意拼寫更好,class_比cla更好
  • 包和模塊
    • 模塊的命名要短
    • 使用小寫
    • 避免使用特殊字符
    • 盡量保持模塊名簡單,以無需分開單詞命名(不推薦使用兩單詞之間下划線分開)
  • 常量
    • 通常定義與模塊級別並且所有的字母都是大寫、單詞用下划線分開

9.項目結構價紹

  • readme:對項目的整體介紹,同時也是一份使用手冊,需要時常維護更新,通常為README.rst/README.md
  • LICENSE:簡述該項目許可說明和授權
  • setup.py:通過setup把核心代碼打包發布
  • sample:存放項目核心代碼
  • requirements.txt:存放該項目所有依賴的第三方庫
  • docs:包的參考文檔
  • tests:所有的代碼測試都存在於該目錄下
  • makefile:用於項目的命令管理(開源項目比較廣泛)根據項目需求添加其他文件和目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM