多次赋值后 numpy 变量出现 Mypy 类型错误

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

我正在尝试确定以下 mypy 警告是否告诉我一些重要的事情。

import numpy as np
from numpy import typing as npt

def test(a: npt.ArrayLike) -> npt.NDArray:

    a = np.asarray(a)
    a = np.abs(a)

    return a

这会导致

return a
行出现以下警告。

不兼容的返回值类型(得到“_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | 字节]”,预期“ndarray[Any,dtype[Any]]”)Mypyreturn-value

以下两项工作都不会出现警告:

return np.abs(a)
b = np.abs(a)
return b

所以我无法判断在

a
中将
np.abs
重新分配给自身是否真的存在问题,或者这是否是
numpy
打字的众多微妙之处之一,我应该解决它。许多其他
numpy
函数(
np.sin
np.ceil
等)仍然存在该警告。

python numpy multidimensional-array mypy python-typing
1个回答
0
投票

Pyright 正确推断了

ndarray
的类型并且没有抱怨。

其他变体起作用的原因是 mypy 放弃并将它们标识为

Any
,这意味着它会检查任何约束。

PS:您可以使用

typing.reveal_type
来了解类型检查器认为表达式是什么类型。

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