引言:每天习以为常的Python代码,是否符合Python的规范?想写出Pytonic风格的代码,却不知道如何开始?
这个“Python代码规范”系列将会解决这些规范性的问题。
注:本代码规范基于PEP8, 在PEP8的基础上做了一些改动。
Python代码规范
注释和文档
代码注释和文档(docstring)的规范,参考并综合了PEP257、Google Python Style Guide和Numpy的文档标准。
注释
- 单行注释和多行注释,请参考Python随笔10:Python代码规范之简明概述。
- 在代码的关键部分(或比较复杂的地方),能写注释的要尽量写注释。
- 比较重要的注释段,使用多个等号隔开,可以更加醒目,突出重要性。
app = create_app(name, options)
# =====================================
# 请勿在此处添加 get post等app路由行为 !!!
# =====================================
if __name__ == '__main__':
app.run()
文档注释(Docstring)
作为文档的Docstring一般出现在模块头部、函数和类的头部,这样在python中可以通过对象的doc对象获取文档。编辑器和IDE也可以根据Docstring给出自动提示。
- 文档注释以 """ 开头和结尾,首行不换行,如有多行,末行必需换行,以下是Google的docstring风格示例:
# -*- coding: utf-8 -*-
"""Example docstrings.
This module demonstrates documentation as specified by the `Google Python
Style Guide`_. Docstrings may extend over multiple lines. Sections are created
with a section header and a colon followed by a block of indented text.
Example:
Examples can be given using either the ``Example`` or ``Examples``
sections. Sections support any reStructuredText formatting, including
literal blocks::
$ python example_google.py
Section breaks are created by resuming unindented text. Section breaks
are also implicitly created anytime a new section starts.
"""
- 不要在文档注释复制函数定义原型,而是具体描述其具体内容,解释具体参数和返回值等:
# 不推荐的写法(不要写函数原型等废话)
def function(a, b):
"""function(a, b) -> list"""
... ...
# 正确的写法
def function(a, b):
"""计算并返回a到b范围内数据的平均值"""
... ...
- 对函数参数、返回值等的说明采用numpy标准,如下所示:
def func(arg1, arg2):
"""在这里写函数的一句话总结(如: 计算平均值).
这里是具体描述.
参数
----------
arg1 : int
arg1的具体描述
arg2 : int
arg2的具体描述
返回值
-------
int
返回值的具体描述
参看
--------
otherfunc : 其它关联函数等...
示例
--------
示例使用doctest格式, 在`>>>`后的代码可以被文档测试工具作为测试用例自动运行
>>> a=[1,2,3]
>>> print [x + 3 for x in a]
[4, 5, 6]
"""
- 文档注释不限于中英文,但不要中英文混用。
- 文档注释不是越长越好,通常一两句话能把情况说清楚即可。
- 模块、公有类、公有方法,能写文档注释的,应该尽量写文档注释。
To be continued.
推荐阅读:小米手环刷公交卡