Python:表示返回和参数类型的标准方法

时间:2014-07-27 13:40:09

标签: python python-2.7 types return-type docstring

是否有标准的Pythonic方式来表达函数的参数类型和返回类型?

我正在寻找一个符号:

  • help()
  • 认可
  • 可识别IDE
  • (优选地)在PEP
  • 中描述

我见过一些例子,例如this reSt syntax

"""replaces template place holder 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
"""

但是,我不确定这种格式的正式/支持程度。

2 个答案:

答案 0 :(得分:3)

主要有3/4格式竞争Python文档字符串。请参阅this tuto以获得概述。 现在停用的旧格式是基于Javadoc样式的Epydoc的 Epytext 。可能更受欢迎的是Sphinx格式的 reStructuredText(reST) Google 样式也很常用。当然, Numpydoc 受到Google风格的启发。

关于官方/标准方式应该参考this topic

每种格式都有自己的方式来表示参数类型和返回类型。下面是一些例子:

- Epytext / Javadoc

"""
@param param1: Description of param1
@type param1: type of param1

@return: description of returned value
@rtype: type of returned value
"""

- reST

"""
:param param1: Description of param1
:type param1: type of param1

:return: description of returned value
:rtype: type of returned value
"""

- Google

"""
Args:
  param1(int): Description of parameter `param1`.
  param2(str, optional): Description of a parameter. Defaults to None.

Returns:
  bool: True or False depending on the result.
"""

- Numpydoc

"""
Parameters
----------
param1 : int
    Description of parameter `param1`.
param2 : {'value1', 'value2'}
    Description of a parameter with two possible values.

Returns
-------
int
    Description of the returned value
"""

转换

请注意,如果您没有文档字符串或者您想要更改Python项目的文档字符串格式,则可以使用Pyment

答案 1 :(得分:0)

AFAIK,没有PEP描述这个; PEP257是关于文档字符串的,但实际上是非常小的(并且stdlib文档字符串很少像你的那样精确)。

两个相互竞争的标准是您已经找到的,在Sphinx中实现的标准,以及在{Sphinx的NumPy convention扩展中实现的更详细(但也更具可读性)numpydoc