天天看點

Python PEP8命名

PEP 8與命名最佳實踐

命名風格

  • 駝峰式命名法
  • 混合式命名法
  • 大寫或者大寫加下劃線
  • 字首和字尾
應用範圍:變量、函數和方法、property、類、子產品、包

變量

  • 常量:大寫加下劃線
  • 共有和私有變量:加下劃線

函數和方法

  • 小寫加下劃線(java一般使用駝峰表示法)

特殊方法

  • 雙下劃線開始雙下劃線結束:比如

    __init__, __repr__

參數

參數名稱使用小寫

property

  • 小寫或者小寫加下劃線

  • 駝峰命名法

子產品和包

  • 子產品名稱都使用小寫,不帶下劃線
  • 如果子產品式包的私有子產品,則添加一個字首下劃線

命名指南

  • has

    is

    字首命名布爾元素
    class DB:
        is_connected = False
        has_cache = False
               
  • 用複數命名集合變量
    class DB:
        connected_users = ['Tarek']
        tables = {
            'Customer':['id', 'first_name', 'last_name']
        }
               
  • 用顯示名稱命名字典
    persons_addresses = {'Bill':'6565 Monty Road',
                         'Pamela':'45 Python street'}
    persons_addresses['Pamela']
               
  • 避免通用名稱
  • 避免現有名稱

參數的最佳實踐

函數和方法的簽名式代碼完整性的保證,他們驅動函數和方法的使用并建構其API。可以通過3個簡單的規則來實作。

  • 通過疊代設計建構參數
  • 新人參數和測試
  • 小心使用魔法參數

    *args

    **kwargs

通過疊代設計建構參數

如果每個函數都有一個固定的、定義明确的參數清單,那麼代碼的魯棒性會更好,但是這在第一個版本中無法完成,是以必須通過疊代設計來建構

例如,如果添加了一些參數,他們應該盡可能的有預設值,以避免任何退化

class Service:
    def _query(self, query, type):
        print("done")
        
    def execute(self, query):
        self._query(query, 'EXEXUTE')
           
import logging

class Service:
    def _query(self, query, type, logger):
        print("done")
        
    def execute(self, query, logger=logging.info):
        self._query(query, 'EXEXUTE', logger)
           

信任參數和測試

**小心使用魔法參數

*args

\*\*kwargs

**

魔法參數

*args

**kwargs

可能會破壞函數或方法的魯棒性

類的名稱

  • 使用字尾表示其類型或特性
    SQLEngine
    MimeTypes
    StringWidget
    TestCase
               
  • 對于基類和抽象類,使用一個Base或者Abstract字首
  • 最重要的式要和類的屬性保持一緻。

子產品和包的名稱

  • 小寫

有用的工具

  • Pylint

    :一個非常靈活的源代碼分析器
  • pep8

    flake8

    :小型的代碼風格檢查器,也是包裝器,添加了一些更有用的特性,例如靜态分析和複雜度測量。

Pylint

pip install pylint

pylint test.py
           

pep8

flake8

pip install pep8

pep8 test.py