问题描述
当我注意到 Pylance 正在输入 numpy.pi
作为 numpy.testing
的成员或类型为 NoseTester 时,我正在向函数调用添加类型提示。
即使我在 python 命令行中得到 type(np.pi) == float
,这个示例代码:
import numpy as np
def foo(val: float):
print(val)
foo(np.pi)
在 foo(np.pi)
pi: Module("numpy.testing") | Type[NoseTester]
Argument of type "Module("numpy.testing") | Type[NoseTester]" cannot be assigned to parameter "val" of type "float" in function "foo"
Type "Module("numpy.testing") | Type[NoseTester]" cannot be assigned to type "float"
Type "Module("numpy.testing")" cannot be assigned to type "float"
"Type[type]" is incompatible with "Type[float]"PylancereportGeneralTypeIssues
对于以下内容,我收到了相同的错误消息(对于 float 以外的类型):numpy.pi
、numpy.e
、numpy.floor
、numpy.ceil
、{{1} }、numpy.sin
、numpy.cos
、numpy.tan
、numpy.sqrt
。
但是,这些浮点数/函数不会导致问题:numpy.exp
、numpy.Inf
、numpy.Nan
、numpy.round
、numpy.real
、{{1 }}。
我在跑步:
- Numpy:1.19.5
- Pylance:2021.5.3
有人知道这是为什么和/或如何解决问题吗?
编辑 1:这似乎更像是 Pylance 问题,所以我创建了 microsoft/pylance-release#1340
解决方法
我真的很傻——我只需要将 Numpy 更新到 1.20 版。正如 on GitHub by Jake Bailey 所指出的,Numpy 不包含 1.20 之前的输入信息。