当我运行
mypy main.py --strict
时
# main.py
import numpy as np
import numpy.typing as npt
def foo(x: npt.NDArray[np.float64]) -> npt.NDArray[np.float64]:
return np.square(x)
我明白了
Success: no issues found in 1 source file
但是当我尝试计算
np.mean
时,我收到错误
# main.py
import numpy as np
import numpy.typing as npt
def foo(x: npt.NDArray[np.float64]) -> np.float64:
return np.mean(np.square(x))
$ mypy main.py --strict
main.py:6: error: Returning Any from function declared to return "floating[_64Bit]" [no-any-return]
Found 1 error in 1 file (checked 1 source file)
我做错了什么?是否因为它不知道
x
的形状,因此如果 np.mean
大于一维,则 x
可以返回一个数组?就我而言,x
始终是一维的,因此我总是会返回一个浮点数,并且我希望类型提示反映用户应该期望返回一个浮点数。
相关 - 标量/数组乘法返回任何类型
你可以试试这个,
import numpy as np
import numpy.typing as npt
def foo(x: npt.NDArray[np.float64]) -> np.float64:
return np.float64(np.mean(np.square(x)))
我让返回值
return np.float64
与预期返回的值相同-> np.float64