Python中的多行注释文档编写风格汇总

 更新时间:2016年06月16日 16:51:14   作者:mattkang  
在Python中利用多行注释编写小型的程序文档说明非常方便,而约定俗成的格式也多种多样,这里我们就进行一下最常见的Python中的多行注释文档编写风格汇总:

什么是docstring

在软件工程中,其实编码所占的部分是非常小的,大多是其它的事情,比如写文档。文档是沟通的工具。
在Python中,比较推崇在代码中写文档,代码即文档,比较方便,容易维护,直观,一致。
代码写完,文档也出来了。其实Markdown也差不多这种思想,文本写完,排版也完成了。
看看PEP 0257中对docstring的定义:

A docstring is a string literal that occurs as the first statement in
a module, function, class, or method definition. Such a docstring
becomes the __doc__ special attribute of that object.
简单来说,就是出现在模块、函数、类、方法里第一个语句的,就是docstring。会自动变成属性__doc__。

def foo():
  """ This is function foo"""

可通过foo.__doc__访问得到' This is function foo'.

各类docstring风格:

Epytext

这是曾经比较流行的一直类似于javadoc的风格。

"""
This is a javadoc style.

@param param1: this is a first param
@param param2: this is a second param
@return: this is a description of what is returned
@raise keyError: raises an exception
"""

reST

这是现在流行的一种风格,reST风格,Sphinx的御用格式。我个人也是喜欢用这种风格,比较紧凑。

"""
This is a reST style.

:param param1: this is a first param
:param param2: this is a second param
:returns: this is a description of what is returned
:raises keyError: raises an exception
"""

Google风格

"""
This is a groups style docs.

Parameters:
  param1 - this is the first param
  param2 - this is a second param

Returns:
  This is a description of what is returned

Raises:
  KeyError - raises an exception
"""

Numpydoc (Numpy风格)

"""
My numpydoc description of a kind
of very exhautive numpydoc format docstring.

Parameters
----------
first : array_like
  the 1st param name `first`
second :
  the 2nd param
third : {'value', 'other'}, optional
  the 3rd param, by default 'value'

Returns
-------
string
  a value in a string

Raises
------
KeyError
  when a key error
OtherError
  when an other error
"""

docstring工具之第三方库pyment

用来创建和转换docstring.
使用方法就是用pyment生成一个patch,然后打patch。

$ pyment test.py      #生成patch
$ patch -p1 < test.py.patch #打patch

详情:https://github.com/dadadel/pyment

使用sphinx的autodoc自动从docstring生产api文档,不用再手写一遍

我在代码中已经写过docstring了,写api文档的内容跟这个差不多,难道要一个一个拷贝过去rst吗?当然不用。sphinx有autodoc功能。
首先编辑conf.py文件,
1. 要有'sphinx.ext.autodoc'这个extensions
2. 确保需要自动生成文档的模块可被import,即在路径中。比如可能需要sys.path.insert(0, os.path.abspath(‘../..'))

然后,编写rst文件,

xxx_api module
---------------------

.. automodule:: xxx_api
  :members:
  :undoc-members:
  :show-inheritance:


敲make html命令,就可以从docstring中生成相关的文档了,不用多手写一遍rst.
看效果:
2016616165000863.jpg (1189×764)

相关文章

  • Python中将图像转换为PDF的方法实现

    Python中将图像转换为PDF的方法实现

    本文主要介绍了Python中将图像转换为PDF的方法实现,主要使用img2pdf和PyPDF2软件包,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • 如何在python中写hive脚本

    如何在python中写hive脚本

    这篇文章主要介绍了如何在python中写hive脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • python访问纯真IP数据库的代码

    python访问纯真IP数据库的代码

    项目中有这样的需求,通过IP地址判断客户端是网通的还是电信的。从同事那拿了个纯文本的IP纯真数据库,用Python写了一个小程序,感觉挺好的。
    2011-05-05
  • 爬虫框架 Feapder 和 Scrapy 的对比分析

    爬虫框架 Feapder 和 Scrapy 的对比分析

    本篇文章在源码层面比对 feapder、scrapy 、scrapy-redis 的设计,阅读本文后,会加深您对 scrapy 以及 feapder 的了解,以及为什么推荐使用 feapder,刚兴趣的朋友可以参考下面文章内容
    2021-09-09
  • Pandas进行数据编码的十种方式总结

    Pandas进行数据编码的十种方式总结

    在机器学习中,很多算法都需要我们对分类特征进行转换(编码),即根据某一列的值,新增(修改)一列。本文为大家总结了Pandas中十种数据编码的方式,需要的可以参考一下
    2022-04-04
  • python使用pandas读写excel文件的方法实例

    python使用pandas读写excel文件的方法实例

    pandas是一个十分强大的数据处理工具,最近需要处理数据并输入到excel,简单列举它的用法,这篇文章主要给大家介绍了关于python使用pandas读写excel文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 如何将一个CSV格式的文件分割成两个CSV文件

    如何将一个CSV格式的文件分割成两个CSV文件

    这篇文章主要介绍了如何将一个CSV格式的文件分割成两个CSV文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python使用latexify模块实现将代码为数学公式

    Python使用latexify模块实现将代码为数学公式

    latexify 是一个轻量级的 Python 模块,可以将 Python 代码转换为 LaTeX 格式的数学表达式,这篇文章就来和大家探索一下如何使用latexify模块实现将代码为数学公式吧
    2023-12-12
  • python装饰器实例大详解

    python装饰器实例大详解

    这篇文章主要介绍了python装饰器实例大详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-10-10
  • Python查找算法之分块查找算法的实现

    Python查找算法之分块查找算法的实现

    这篇文章主要介绍了Python查找算法之分块查找算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论