Python类型检查未按预期工作

2024-03-29 00:46:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我确信我在这里遗漏了一些明显的东西,但是为什么下面的脚本真的有效呢?你知道吗

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)时失败,但是它不会。有人能解释一下这种行为吗?你知道吗


Tags: import脚本typingreturndefenumclassprint
1条回答
网友
1楼 · 发布于 2024-03-29 00:46:52

Python本身不执行任何检查。这在PEP 484的"Non- Goals" section中规定。在执行时(即在运行时),Python完全忽略您提供的注释,并像通常那样动态地计算语句。你知道吗

如果你需要类型检查,你应该自己做。这目前可以由静态类型检查工具(如^{})执行。你知道吗

相关问题 更多 >