Sphinx napoleon 文档函数可以返回多个参数吗?

Can Sphinx napoleon document function returning multiple arguments?

我正在尝试使用 Google 代码风格来记录一个函数,然后我使用带有拿破仑扩展名的 sphinx 来为其创建文档。该函数的不寻常之处在于 return 有两个参数。我认为拿破仑不会处理这个问题。如果是这样,有人能告诉我他们是如何处理的吗?

def foo(a):
'''one line summary

longer explanation

Args:
  a (int): parameter description

Returns:
  servers (list): list of servers to use
  msg (str): logging message string 
'''
pass

也许我收到一条消息说 return 多个参数不是很好的编码风格,但你能做到吗?生成的 html 将这两行视为对一个参数的描述的一部分。如果我在 servers 和 msg 行之间放一个换行符,它会有所帮助,但它仍然记录一个 arg。

Python 只有 returns 一个对象。如果你打电话

serv,msg = foo(myinput)

然后你显式地扩展了 expression_list 元组,它是在函数 returns 中用这段代码

生成的
return servers,msg

你的文档字符串应该读这样的东西(拿破仑 Google 风格)

"""
one line summary

longer explanation

Args:
    a (int): parameter description

Returns:
    (tuple): tuple containing:

        servers(list) servers to use
        msg (str): logging message string 
"""

或者拿破仑 NumPy 风格:

"""
one line summary

longer explanation

Parameters
----------
a : int
    parameter description

Returns
-------
servers : list
    servers to use
msg : str
    logging message string 
"""

查看 python 文档 return and perhaps expression_list

Google 样式不支持多个 return 值。作为解决方法,您可以使用:

Returns:
    2-element tuple containing

    - **rates** (*array*): the unnormalized rates (just the sum of the
      exponential kernels). To obtain rates in Hz divide the
      array by `2*tau` (or other conventional `x*tau` duration).
    - **nph** (*array*): number of photons in -5*tau..5*tau window
      for each timestamp. Proportional to the rate computed
      with KDE and rectangular kernel.

即使每个 returned 项目都有多行描述,这也会产生很好的输出。

在尝试了几种选择后,这种格式适合我

def foo(a):
    """
    
    Args:
        a (int): parameter description

    Returns:
        - list: 
          parameter description
        - str: 
          logging message string
    """

注意换行后的两个空格。

您可以使用 napoleon_custom_sections 设置配置拿破仑来解释 Google 风格文档字符串的 Returns 部分,就像 Args 部分一样。

napoleon_custom_sections = [('Returns', 'params_style')]

这样,Sphinx 可以很好地呈现多个 return 值(如问题中给出的)。但是,我不确定在使用此选项时是否仍然严格遵守 Google 风格的文档字符串约定。