在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能够了解返回类型?
答案 0 :(得分:0)
sphinxcontrib的文档页面
Returns
部分支持任何reStructuredText格式,
包括文字块::{ 'param1': param1, 'param2': param2 }
这表示Google样式支持内部的reStructuredText格式,使用以下格式将返回元组自动完成选项。
def func():
"""
Returns:
:rtype: (int, str)
"""
pass
a, b = func()
这是您正在寻找的解决方案吗?
答案 1 :(得分:0)
PEP 484指定的类型提示是否无效?
Python 3 docs for typing module
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,如果您使用它来解析您的文档字符串)将正确地知道您的函数的返回类型,并且您将对该函数的返回值有一个清晰而漂亮的描述。