如何在Sphinx处理的文档字符串中表示单个参数或返回值的多个类型? [英] How to express multiple types for a single parameter or a return value in docstrings that are processed by Sphinx?

查看:18
本文介绍了如何在Sphinx处理的文档字符串中表示单个参数或返回值的多个类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有时,Python中的函数可能会接受灵活类型的参数。或者,它可以返回灵活类型的值。现在我记不起这样一个函数的好例子了,所以我在下面用一个玩具例子演示这样的函数可能是什么样子。

我想知道如何使用Sphinx文档表示法为这些函数编写文档字符串。在下面的示例中,参数可以是strint。同样,它可能返回strint

我给出了一个文档字符串示例(既使用默认的Sphinx表示法,也使用Sphinx的拿破仑扩展理解的Google表示法)。我不知道这是否是记录灵活类型的正确方式。

Sphinx默认表示法:

def add(a, b):
    """Add numbers or concatenate strings.

    :param int/str a: String or integer to be added
    :param int/str b: String or integer to be added
    :return: Result
    :rtype: int/str
    """
    pass

斯芬克斯·拿破仑谷歌符号:

def add2(a, b):
    """Add numbers or concatenate strings.

    Args:
      a (int/str): String or integer to be added
      b (int/str): String or integer to be added

    Returns:
      int/str: Result
    """
    pass

表示要由Sphinx处理的文档字符串中的参数或返回值的多个类型的正确方式是什么?

推荐答案

<2-4]>类型提示

https://docs.python.org/3/library/typing.html#typing.Union

对于Python2,我建议使用与该Python3模块完全相同的语法,即:

  • 使移植更容易,并可能在以后实现自动化
  • 指定唯一的、定义良好的规范方法

示例:

def f(int_or_float):
    """
    :param int_or_float: Description of the parameter
    :type int_or_float: Union[int, float]
    :rtype: float
    """
    return int_or_float + 1.0

然后当你有3.5的时候,你只需写:

from typing import Union

def f(int_or_float : Union[int, float]) -> float:
    """
    :param int_or_float: Description of the parameter
    """
    return int_or_float + 1.0

我认为它已经支持文档生成,但我还没有测试它:https://github.com/sphinx-doc/sphinx/issues/1968

这篇关于如何在Sphinx处理的文档字符串中表示单个参数或返回值的多个类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆