在文档字符串中使用输入模块

时间:2018-10-16 12:43:29

标签: python pycharm typing docstring

假设我有一个带有docstring的函数,我在其中将返回类型声明为带有两个字符串的元组:

def foo():
    """
    Returns:
        Tuple[str, str]: Tuple of first name and last name
    """

如果除了文档字符串中的任何地方都没有使用Tuple,我应该从typing导入{{1}}吗?

2 个答案:

答案 0 :(得分:1)

PyCharm对类型提示的文档字符串支持实际上并未使用Activity。您不需要导入模块。

typing模块仅用于支持批注在运行时执行的事实。对于以typing开头的语句,Python实际上将对表达式def foo() -> Tuple[str, str]:进行求值,因此希望能够解析名称。 (从Python 3.7开始,您可以使用Tuple[str, str]禁用(或更确切地说,是 postpone )。)

但是,通常不会评估文档字符串,并且不应包含可运行的Python代码。

除非您有硬性要求将类型信息放入文档字符串中,否则我会坚持使用实际注释

from __future__ import annotations

答案 1 :(得分:0)

你不知道。文档字符串只是注释。解释器将忽略它们。因此,请勿导入它,否则代码检查工具(例如pylint)将抱怨未使用的导入。

但是,对于实际代码部分,最好在文档字符串中使用反引号。例如

"""
Returns:
    `Tuple[str, str]`: Tuple of first name and last name
"""

这样,文档生成工具就知道它是实际的代码,并且可以正确地设置其格式。