如何使PyCharm从函数定义中获取类型提示并在文档字符串中填充类型值?

时间:2019-05-31 17:17:12

标签: python types pycharm docstring

我总是在函数定义中使用类型提示,例如:

def foo(a: int, b: str) -> bool:
    pass

当我使用PyCharm自动文档字符串生成器在我的代码中创建文档字符串时,我得到了:

def foo(a: int, b: str) -> bool:
    """
    :param a: 
    :type a: 
    :param b: 
    :type b: 
    """
    pass

如您所见,PyCharm无法识别我在函数本身中定义的类型值,我应该再次将它们写入docstring中。我如何使PyCharm为我自动生成类似的内容(从第一行读取类型值并将其插入到文档字符串中):

def foo(a: int, b: str) -> bool:
    """
    :param a:
    :type a: int
    :param b:
    :type b: str
    :rtype: bool
    """
    pass

2 个答案:

答案 0 :(得分:0)

转到Settings -> Editor -> Intentions。在Python类别下的Specify type for reference in docstring框中打勾。

一旦激活此功能,您就可以使用调试器及其功能:Insert documentation string stub来填充函数的文档字符串。 (请注意,您需要激活位于Collect runtime information for code insight上的Settings -> Build, Execution, Deployment -> Python Debugger选项)

这个过程要花一些时间来详细说明,因此,我将提供有关此内容的官方PyCharm教程的链接:https://www.jetbrains.com/help/pycharm/using-docstrings-to-specify-types.html

答案 1 :(得分:0)

PyCharm Bugtracker上有一个功能请求:Generate docstring types based on the existed inline annotations

截至2020年底,PyCharm似乎仍不支持将方法中的类型信息自动添加到文档字符串中。

对功能请求有一条评论,询问为什么需要这种功能:

以下每个人的问题,为什么您需要在注释和文档字符串中都放入类型提示? PyCharm仅部分支持后一种格式(在此不理解所有可能的PEP 484类型提示,请参阅PY-23400),而大多数其他类型检查器根本无法识别。另一方面,注释中的类型提示已正确显示在快速文档和Sphinx呈现的文档中(也许借助sphinx-autodoc-typehints帮助)。