如何解决用于类型安全的 Python 打字模块
python 3.7
我来自具有严格类型系统的 Scala,这个例子让我感到困惑:
from typing import Optional
tst: Optional[int] = None
tst2: int = None
tst3: Optional[int] = 'string'
print(tst) # prints None
print(tst2) # prints None
print(tst3) # prints string
它运行良好,没有任何错误。
所以类型注解只用于描述和外部工具(如linters),不影响python运行时本身?或者我错过了什么
解决方法
简而言之:是的,这些注释主要是针对外部工具的。类型注释不会实质性地改变程序的执行方式,并且您正确地注意到具有类型错误的 Python 程序可以正常执行。
为了详细说明,这些类型提示来自 PEP-483 和 PEP-484。这些提议区分了“类型”(您注释的事物)和“类”(在运行时实际上是有意义的):
每个类都是上面讨论的类型。但是,实现一个准确表示给定类型语义的类是很棘手且容易出错的,这不是 PEP 484 的目标。PEP 484 中描述的静态类型不应与运行时类混淆。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。