Python PEP8命名

PEP 8与命名最佳实践

命名风格

  • 驼峰式命名法
  • 混合式命名法
  • 大写或者大写加下划线
  • 前缀和后缀

应用范围:变量、函数和方法、property、类、模块、包

变量

  • 常量:大写加下划线
  • 共有和私有变量:加下划线

函数和方法

  • 小写加下划线(java一般使用驼峰表示法)

特殊方法

  • 双下划线开始双下划线结束:比如__init__, __repr__

参数

参数名称使用小写

property

  • 小写或者小写加下划线

  • 驼峰命名法

模块和包

  • 模块名称都使用小写,不带下划线
  • 如果模块式包的私有模块,则添加一个前缀下划线

命名指南

  • hasis前缀命名布尔元素

    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:一个非常灵活的源代码分析器
  • pep8flake8:小型的代码风格检查器,也是包装器,添加了一些更有用的特性,例如静态分析和复杂度测量。

Pylint

pip install pylint

pylint test.py

pep8flake8

pip install pep8

pep8 test.py

你可能感兴趣的:(python)