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 仍然是一种动态类型语言,因此本身不进行任何类型检查。
上下文
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 仍然是一种动态类型语言,因此本身不进行任何类型检查。