应用范围:变量、函数和方法、property、类、模块、包
变量
函数和方法
特殊方法
__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