python - 在文档字符串中使用 typing 模块

标签 python pycharm typing docstring

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

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

如果我不在除文档字符串之外的任何地方使用它,我是否应该从 typing 导入 Tuple

最佳答案

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

typing 模块只是为了支持注释在运行时执行的事实;对于以 def foo() -> Tuple[str, str]: 开头的语句,Python 实际上会计算表达式 Tuple[str, str] 所以期望能够解析名称。 (从 Python 3.7 开始,您可以使用 from __future__ import annotations 禁用(或者更确切地说,推迟)评估)。

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

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

from typing import Tuple


# type aliases
firstname = str
lastname = str


def foo() -> Tuple[firstname, lastname]:
    """Descriptive line documenting this function's purpose"""
    # ...

关于python - 在文档字符串中使用 typing 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52835740/

相关文章:

python - 如何在 Python 中对变量进行类型检查?

python - 函数接受表示十进制数字的字符串并以二进制格式返回它

python - 无法从 PyCharm 中的特定文件夹导入

python - 如何在 Python 脚本中获取 Perl 脚本的结果?

python - 如何显示<IPython.core.display.HTML对象>?

python - Py.test 收集阶段需要很长时间

python - TypeVar ('T' ) 和 Any 之间的区别

C++ 模板参数和偏特化 : strong or weak typing?

python - 尝试并在Python中对RuntimeError进行尝试,但未捕获到错误

Python MYSQLdb 文档缺少详细信息?