mypy:在执行期间引发 TypeError

mypy: Raise TypeError during execution

上下文

mypy 非常适合检查类型是否被正确处理。

# example.py

def test(string: str):
    return str

if __name__ == '__main__':
    test('19')
    test(19)

这适用于第一种情况,但不适用于第二种情况。

>> mypy example.py
example.py:6: error: Argument 1 to "test" has incompatible type "int"; expected "str"

然而,只是 运行 这个通过

>> python example.py

不会引发任何错误。

问题

是否可以在 python 中使用可选的静态类型来在实际执行代码时引发错误?

我希望使用这个,例如在 unittests 中检查变量类型,这比使用各种 if not isinstance(...) 语句要容易得多。

简而言之:Python 不会检查您的类型,即使您包含了类型提示。

Type-Hinting 已被引入以提供 static 类型检查的选项。这可以帮助您在 运行 您的代码之前消除许多错误。但是您将需要使用像 mypy 这样的静态类型检查器来执行此操作。 Python 仍然是一种动态类型语言,因此本身不进行任何类型检查。