python 类型提示不会为错误类型生成错误

2024-03-20

我最近正在检查类型提示,在阅读了一些理论后,我尝试了一个简单的示例,如下所示

def myfun(num1: int, num2: int) -> int:
    return str(num1) + num2


a = myfun(1,'abc')
print(a)
# output -> 1abc

在这里你可以看到我已经定义了num1 and num2int 类型,甚至在传递之后num2值作为字符串它不会产生任何错误。

该函数还应该返回int类型值,但它不会抱怨返回字符串类型值。

有人可以解释一下这里出了什么问题吗?


这就是所谓的类型hinting原因是:你给了一个hint关于变量对于 IDE 或其他阅读您代码的人来说应该是什么。在运行时,类型提示实际上没有任何意义 - 它们的存在是为了其他开发人员的文档和可用性。如果你违反类型提示,python 不会stop你(它假设你知道自己在做什么),但这是不好的做法。

请注意,这与 Java 等静态类型语言不同,在 Java 中,尝试传递与函数定义不兼容的参数将产生编译时错误,并且如果传递不同类型但兼容的参数(例如传递float到一个期望的函数int)它将自动进行类型转换。

请注意,您给出的代码将遇到TypeError如果程序员按照他们应该的方式使用它,因为int不能连接到str。您的 IDE 或 linter 应该能够看到这一点,并在该行上向您发出警告,它会根据类型提示执行此操作。这就是类型提示的用途——通知 IDE 和文档的行为,并提供一个危险信号,表明您可能没有以预期的方式使用函数——而不是在运行时执行任何操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 类型提示不会为错误类型生成错误 的相关文章

随机推荐