(点击上方公号,可快速关注)
一篇 针对Python开发的“最佳实践精选”指南。
总体原则
价值标准
“为别人开发你也想要使用的工具。” Kenneth Reitz
“简洁性总是胜过可用性。” Pieter Hintjens
“满足90%的使用场景。忽略那些说不的人。” Kenneth Reitz
“优美胜过丑陋。” PEP 20
为开源(甚至是闭源项目)而开发。
一般开发准则
特殊准则
风格
感觉合理的话,就遵循PEP 8。
命名
小写,并使用下划线分隔单词(lower_case_with_underscores)
首字母大写(CapWords)
单下划线开头(_single_leading_underscore(self, …))
双下划线开头(__double_leading_underscore(self, …))
字母全部大写,单词间用下划线分隔(ALL_CAPS_WITH_UNDERSCORES)
一般命名准则
尽量不要使用只有一个字母的变量名(例如,l,I,O等)。
例外:在很简短的代码块中,如果变量名的意思可以从上下文明显地看出来。
没问题
for e in elements:
e.mutate()
避免冗余描述。
正确的做法
import audio
core = audio.Core()
controller = audio.Controller()
错误的做法
import audio
core = audio.AudioCore()
controller = audio.AudioController()
“反向记法”更好。
正确的做法
elements = ...
elements_active = ...
elements_defunct = ...
错误的做法
elements = ...
active_elements = ...
defunct_elements ...
避免使用getter和setter方法。
正确的做法
person.age = 42
错误的做法
person.set_age(42)
缩进
用4个空格符永远别用Tab制表符。就说这么多。
模块引用
引用整个模块,而不是模块中的单个标识符。举个例子,假设一个cantee模块下面,有一个sessions.py文件,
正确的做法
import canteen
import canteen.sessions
from canteen import sessions
错误的做法
from canteen import get_user # Symbol from canteen/__init__.py
from canteen.sessions import get_session # Symbol from canteen/sessions.py
例外:如果第三方代码的文档中明确说明要单个引用。
理由:避免循环引用。看这里。
把代码引用部分放在文件的顶部,按下面的顺序分成三个部分,每个部分之间空一行。
系统引用
第三方引用
本地引用
理由:明确显示每个模块的引用来源。
文档
遵循PEP 257提出的文档字符串准则。reStructuredText (reST) 和Sphinx有助于确保文档符合标准。
对于功能明显的函数,撰写一行文档字符串。
"""返回``foo``的路径名."""
多行文档字符串应包括:
返回数据类型和语义信息,除非返回None“”"训练模型,用来对Foo和Bar分类。
用法::
"""Train a model to classify Foos and Bars.
Usage::
|