Python 类型检查未按预期工作

标签 python python-3.x types type-hinting

我确定我在这里遗漏了一些明显的东西,但为什么以下脚本实际上有效?

import enum
import typing

class States(enum.Enum):
    a = 1
    b = 2

states = typing.NewType('states', States)

def f(x: states) -> states:
    return x

print(
    f(States.b),
    f(3)
)

据我所知,它应该在调用 f(3) 时失败,但事实并非如此。有人可以阐明这种行为吗?

最佳答案

Python 本身不执行任何检查。这在 "Non- Goals" section 中指定PEP 484 的。执行时(即在运行时期间),Python 完全忽略您提供的注释并像往常一样动态评估您的语句。

如果你需要类型检查,你应该自己执行。这目前可以通过静态类型检查工具执行,例如 mypy .

关于Python 类型检查未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40090600/

相关文章:

SQL Server BIGINT 或 DECIMAL(18,0) 主键

scala - 如何将一种类型限制为另一种类型的子集?

python - 计算pandas中事件之间的时间差

python - 如何填充表格中缺失的元素?

python - 在python中解压缩文件但不更改文件创建时间

python - 使用 python win32com Outlook 清楚地记录阅读电子邮件功能

python-3.x - 使用数据集 api 在 TensorFlow 中进行数据增强的正确方法?

python - 如何将 svn 存储库内部版本号添加到 Python 代码中?

python - 获取列表元素中的子字符串 Python - 网页抓取

scala - 是否可以将类型构造函数视为函数式编程语言中的类型?