如何用Google风格的Pydoc for Pycharm表示返回类型元组?

时间:2016-12-09 07:37:17

标签: python pycharm pydoc

在Pycharm中,我希望有一个记录的函数返回一个元组,以便我可以在其上获得代码。评论的风格是谷歌风格。

正常工作

def func():
    """

    Returns:
        str: something

    """
    pass

正确键入func().会显示str的方法。

但是,输入此不再工作:

def func():
    """

    Returns:
        (int, str): something

    """
    pass

a, b = func()

键入b.不提供任何内容。

我知道PyCharm能够解析元组,因为此代码有效

def func():
    """

    :rtype: (int, str)
    """
    pass

a, b = func()

但是,这不符合谷歌的风格。

如何根据标准记录函数,以便Pycharm能够了解返回类型?

4 个答案:

答案 0 :(得分:0)

sphinxcontrib的文档页面

  

Returns部分支持任何reStructuredText格式,
  包括文字块::

        {
            'param1': param1,
            'param2': param2
        }
     

Documentation

这表示Google样式支持内部的reStructuredText格式,使用以下格式将返回元组自动完成选项。

def func():
    """

    Returns:
        :rtype: (int, str)

    """
    pass

a, b = func()

这是您正在寻找的解决方案吗?

答案 1 :(得分:0)

PEP 484指定的类型提示是否无效?

Python 3 docs for typing module

Python PEP 484

from typing import Tuple

def func():
    """

    :rtype: Tuple[int, str]
    """
    pass

a, b = func()

答案 2 :(得分:0)

如果您的主要目标是在 PyCharm 中实现自动完成,我建议在函数定义 (Tuple[int, str]) 上使用类型提示。

from typing import Tuple

def func() -> Tuple[int, str]:
    """

    :rtype: (int, str)
    """
    pass

a, b = func()  

我知道您的问题是关于如何通过文档字符串实现这一点,但我强烈建议使用类型提示,因为它允许像 mypy 这样的工具来验证您的代码(使用文档字符串无法做到的事情 - Can mypy check docstrings?).

我并不是说您不应该在文档字符串中包含类型,只是您的 IDE 更有可能支持静态类型提示,并且静态类型提示允许您在定义中使用更大程度的粒度。

答案 3 :(得分:0)

这是我的做法:

from typing import Tuple

def func() -> Tuple[int, str]:
    """ (...)

    Returns:
        A tuple containing, respectively, an int (<meaning of the
        returned int>) and a string (<meaning of the returned string>).
    """

PyCharm(和 Sphinx,如果您使用它来解析您的文档字符串)将正确地知道您的函数的返回类型,并且您将对该函数的返回值有一个清晰而漂亮的描述。