Python类型检查不按预期工作

时间:2016-10-17 15:44:42

标签: 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)上失败,但事实并非如此。有人可以对这种行为有所了解吗?

1 个答案:

答案 0 :(得分:3)

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

如果您需要进行类型检查,则应自行执行。目前可以通过mypy等静态类型检查工具执行此操作。