[英]How to deal with PyCharm's "Expected type X, got Y instead"
使用 PyCharm 时,如果我编写np.array(0.0)
,Pycharm 的代码样式检查会给我警告Expected type 'Union[ndarray, Iterable]', got 'float' instead
在编辑器中。 当我写np.array([0.0])
时,我没有收到任何警告。
编码时
from scipy.special import expit
expit(0.0)
我得到Expected type 'ndarray', got 'float' instead
,而
expit(np.array([0.0]))
解决了这个问题。
我认为 Pycharm 的代码风格检查想要告诉我的是类型错误的可能性,但我不确定在良好编程的意义上我应该如何应对。 PyCharm 骂我是对的吗?我应该使用长版本还是应该保留短版本以提高可读性和编码速度?
如果我不应该将我的代码更改为长版本 - 我可以摆脱 Pycharm 的代码样式检查警告,还是这是一个坏主意,因为它们在其他情况下可能是正确的,并且我无法调整警告具体来说?
PyCharm 根据源代码的类型提示确定您传递的参数不正确。
您的问题简化为弄清楚如何禁用此类型检查。 但是,请注意,
完全关闭检查不是一个好的解决方案。 大多数情况下,PyCharm 都是正确的,这提供了有用的反馈。 如果它弄错了,最好和他们一起提出一张票,看看是否可以修复。
你可以这样做:
转到Settings/Preferences
在侧边栏上,单击Inspections
(在编辑器类别下)
展开Python
选项卡
向下滚动到Type Checker
并取消选中它
PyCharm 现在应该停止发出有关不正确函数参数的警告。
如果您想为该特定行忽略它,
然后你可以把
# noinspection PyTypeChecker
在被标记的代码行上方。
看看expit 函数的规格。 没有什么说允许提供标量参数 - 它需要一个numpy.ndarray
。 PyCharm 足够聪明,可以告诉您任何可迭代的(因此是列表)都是可接受的,但此消息不是警告 - 它告诉您编写的代码不符合函数的规范。 正如@JonClements 在评论中指出的那样, numpy
的标量广播功能将允许此代码运行,但 PyCharm 不够聪明,无法推断出这一点。
注意:@cs95 的答案解释了如何禁用类型检查,它可能更适合作为接受的答案。
正如@brunodd 之前在评论中所说,取消选中的正确标签是Type checker
。
Settings/Preferences
( Ctrl + Alt + S
)Inspections
上Python
选项卡Type Checker
并点击Apply
这真的很烦人,PyCharm 无法识别某些类型,即使它是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.