使用javadoc for Python文档

时间:2011-03-17 03:22:52

标签: python documentation javadoc docstring

我目前正在使用Python,我有很强的PHP背景,在PHP中,我习惯使用javadoc作为文档模板。

我想知道javadoc在Python中是否有docstring文档的位置。 这里的既定惯例和/或官方指令是什么?

E.g。这样的东西太过精心设计以适应Python的思维模式,还是应尽量简洁?

"""
replaces template place holder with values

@param string timestamp     formatted date to display
@param string priority      priority number
@param string priority_name priority name
@param string message       message to display

@return string formatted string
"""

如果我有点过于详尽,我应该选择这样的东西(大部分文档都不会通过__doc__方法打印出来)?

# replaces template place holder with values
#    
# @param string timestamp     formatted date to display
# @param string priority      priority number
# @param string priority_name priority name
# @param string message       message to display
#    
# @return string formatted string

def format(self, timestamp = '', priority = '', priority_name = '', message = ''):
    """
    replaces template place holder with values
    """
    values = {'%timestamp%' : timestamp,
              '%priorityName%' : priority_name,
              '%priority%' : priority,
              '%message%' : message}

    return self.__pattern.format(**values)

4 个答案:

答案 0 :(得分:224)

查看reStructuredText(也称为“reST”)格式,这是一种纯文本/文档字符串标记格式,可能是Python世界中最受欢迎的格式。您当然应该查看Sphinx,这是一种从reStructuredText生成文档的工具(例如用于Python文档本身)。 Sphinx包含从代码中的文档字符串中提取文档的可能性(请参阅sphinx.ext.autodoc),并根据某些约定识别reST field lists。这可能成为(或正在成为)最受欢迎的方式。

您的示例可能如下所示:

"""Replaces template placeholder with values.

:param timestamp: formatted date to display
:param priority: priority number
:param priority_name: priority name
:param message: message to display
:returns: formatted string
"""

或扩展了类型信息:

"""Replaces template placeholder with values.

:param timestamp: formatted date to display
:type timestamp: str or unicode
:param priority: priority number
:type priority: str or unicode
:param priority_name: priority name
:type priority_name: str or unicode
:param message: message to display
:type message: str or unicode
:returns: formatted string
:rtype: str or unicode
"""

答案 1 :(得分:72)

关注Google Python Style Guide。请注意,Sphinx还可以使用Napolean扩展来解析此格式,该扩展将与Sphinx 1.3一起打包(这也与PEP257兼容):

def func(arg1, arg2):
    """Summary line.

    Extended description of function.

    Args:
        arg1 (int): Description of arg1
        arg2 (str): Description of arg2

    Returns:
        bool: Description of return value

    """
    return True

取自上面链接的Napolean文档的示例。

关于所有类型文档字符串的综合示例here

答案 2 :(得分:25)

Python Enhancement Proposal 257中描述了python文档字符串的标准。

您方法的相应评论类似于

def format(...):
    """Return timestamp string with place holders replaced with values.

    Keyword arguments:
    timestamp     -- the format string (default '')
    priority      -- priority number (default '')
    priority_name -- priority name (default '')
    message       -- message to display (default '')
    """

答案 3 :(得分:1)

查看Documenting Python,这是一个针对Python文档的作者和潜在作者的页面。

简而言之,reStructuredText是用于记录Python本身的内容。开发人员指南包含reST入门,样式指南以及编写良好文档的一般建议。