我正在编写一个具有不同行为的函数,具体取决于参数是标量还是NumPy数组。然而,我得到了以下两个输入错误,我不知道如何解决:
Expression of type "generic | bool | int | float | complex | str | bytes | memoryview" cannot be assigned to return type "float" Type "generic | bool | int | float | complex | str | bytes | memoryview" cannot be assigned to type "float" "bytes" is incompatible with "float"
PylancerreportGeneralTypeIssues"__ getitem __" method not defined on type "float"
PylancereportGeneralTypeIssues**。
如何让Pylance知道如果代码到达if
语句中的表达式,x
应该是float
,如果到达else
表达式,x
应该是NumPy数组?
示例代码:
import numpy as np
import numpy.typing as npt
def func(x: float | npt.NDArray[np.float64]) -> float:
if np.isscalar(x):
return x # Error 1)
else:
return x[0] # Error 2)
def main():
x = 0.4
print(func(x))
if __name__ == "__main__":
main()
1条答案
按热度按时间ia2d9nvy1#
一种可能性是添加
assert
或cast
以强制将其视为浮点型。以下任何一项都将起作用:一起来:
...虽然,更直接的是:
...除非您依赖
np.isscalar
来执行这些类型签名所建议的以外的操作。