是否有标准的Pythonic方式来表达函数的参数类型和返回类型?
我正在寻找一个符号:
help()
我见过一些例子,例如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
"""
但是,我不确定这种格式的正式/支持程度。
答案 0 :(得分:3)
主要有3/4格式竞争Python文档字符串。请参阅this tuto以获得概述。 现在停用的旧格式是基于Javadoc样式的Epydoc的 Epytext 。可能更受欢迎的是Sphinx格式的 reStructuredText(reST)。 Google 样式也很常用。当然, Numpydoc 受到Google风格的启发。
关于官方/标准方式应该参考this topic。
每种格式都有自己的方式来表示参数类型和返回类型。下面是一些例子:
"""
@param param1: Description of param1
@type param1: type of param1
@return: description of returned value
@rtype: type of returned value
"""
"""
:param param1: Description of param1
:type param1: type of param1
:return: description of returned value
:rtype: type of returned value
"""
"""
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.
"""
"""
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
。