打印不适用于 mypy

print doesn't work with mypy

当我在 python3 方法中使用 mypy 时,它不打印任何内容。我使用下面的代码,它没有错误。

def p(st : str) -> bool:
    print('hello')
    return True

p("hello")
print(10)

但它不打印 "hello" 或“10”。有什么问题?

如果您有一些 Python 代码,您是否决定使用 mypy 检查它是完全可选的。如果你关心 type-checking 你的代码,你可以 运行 mypy 并得到你的代码包含的任何错误的报告(如果有的话)。如果您不关心 type-checking 您的代码,您可以忽略该工具(因为您不需要报告)。

请注意,mypy 所做的只是给您一份报告。这就是为什么 mypy test.py 什么都不做——它只是在生成报告,而不是 运行 生成任何代码。

目前,您的代码没有类型错误,因此 mypy 实际上不会打印任何内容——报告是空的。你可以看到 mypy 试图故意在你的代码中引入错误时给你的报告类型的例子。例如,尝试修改您的函数,使其 returns 成为字符串而不是布尔值。这与您的类型签名相矛盾,因此 mypy 会将其标记为错误并将其包含在生成的报告中。

要真正 运行 您的代码,您需要使用 Python 解释器。在这里,您似乎正在编写 Python 3 代码,因此您需要先安装并使用 Python 3 解释器。完成后,如果您使用 Mac 或 Linux,则可以通过执行 python3 test.py 在命令行上 运行 您的代码,如果您使用 py -3 test.py,则可以执行 py -3 test.py正在使用 Windows.

请注意,Python 3 解释器在 运行 编译它时会完全忽略您的类型注释。注释是有效的 Python 语法,但基本上会被 Python 解释器本身忽略。注释的存在纯粹是为了让您将元数据附加到代码的某些部分,然后第三方库和工具可以分析和使用这些部分。