mypy 会检查“从不打字”吗?

问题描述 投票:0回答:2

我正在玩 mypy 中的

Never
类型。如果我有一个函数
foo(x: int)
我预计当使用
Never
类型的值调用时 mypy 会抱怨,但它会默默地对调用进行类型检查:

from typing import Never


def foo(x: int):
    pass


def bar(x: Never):
    foo(x)  # ok, I exected a type error
    foo("foo")  # err

python type-hinting mypy
2个回答
0
投票

这是正常现象。

Never
是所有其他类型的子类型。毕竟,
Never
是没有值的类型。所有
Never
类型的值都是所有其他类型的值,因为
没有 
Never

类型的值。

0
投票

Never
类型暗示它的值永远不会被创建,这意味着像你的函数
bar一样使用它的值的代码将never

被运行,所以它被认为是死代码,一个检查没有必要。

mypy 文档在无法访问的代码上也有此内容

Mypy 可能会认为某些代码无法访问,即使原因可能并不明显。需要注意的是,mypy 不会对此类代码进行类型检查。考虑这个例子:

© www.soinside.com 2019 - 2024. All rights reserved.