引言:每天习以为常的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.
推荐阅读:虚拟镭射键盘
-
奈飞在印度“耐”不住:20元人民币套餐“套”
低价定制和本地原创让奈飞赢得了印度用户的心。“如果我们认为业务将产生重大影响,我们不会回避大刀阔斧地采取行动。”奈飞在10月份给股东的季报中做了这一大胆的声明。...
2019-12-24 -
2020年全球开源领域猜想:Linux 称霸
近日,开源倡导者及安卓技术专家 Jack Wallen 在 TechRepublic 上发布了一篇博文,针对开源以及 Linux、Docker 引擎、自动化等相...
2019-12-24 -
真无线降噪即将全面爆发:2019音频行业年终
在音频行业2017-2019年的三年里,无疑是TWS真无线耳机高速爆发的三年时间,从苹果发布AirPods真无线耳机,正式开启TWS耳机的序幕,行业里便涌现了无...
2019-12-24 -
小米众筹再现牛气性价比!众筹率高达2818%
你用的吹风机干发快吗?会伤发质吗?是飞利浦家的吗?是戴森家的吗?进来的小伙伴请先接收来自小编的灵魂三问~小编知道,大多数人面对最后一问很有可能都是摇头状态。说起...
2019-12-24 -
ETC实际是落后的技术?为什么不直接扫描车牌
ETC指电子不停车收费系统,是指车辆在通过收费站时通过车上安装的ETC车载系统与收费站之间微波通讯,进行车辆识别,再联合网络和银行进行自动扣费的一种新型收费模式...
2019-12-24 -
iOS 的魔鬼细节:那些值得探索的功能
话说 iOS 13 正式版从9月20日发布至今也已经有三个月了,总觉得涉及功能已经被大家都写完了。但是 iOS 的功能并不是在 iOS 13 一代完成的。iOS...
2019-12-24