如何处理PyCharm的“期望类型X,得到的却是Y”

zmeyuzjn  于 2022-11-08  发布在  PyCharm
关注(0)|答案(4)|浏览(161)

当使用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的代码风格检查警告,或者这是一个坏主意,因为它们在其他情况下可能是正确的,而我无法专门调整警告?

krugob8w

krugob8w1#

PyCharm根据源代码的类型提示确定您传递的参数不正确。

如何禁用

您的问题简化为找出如何禁用此类型检查。但是,请注意,
完全关闭检查并不是一个好的解决方案。大多数情况下PyCharm都能做对,这会提供有用的反馈。如果它做错了,最好向他们提出一张罚单,看看是否可以修复。
您可以这样做:
1.转到Settings/Preferences
1.在侧栏上,单击“Inspections”(在“编辑器”类别下)
1.展开Python选项卡
1.向下滚动到Type Checker并取消选中
PyCharm现在应该停止发出关于不正确的函数参数的警告。

ecbunoof

ecbunoof2#

如果您想忽略该特定行,
然后您可以将


# noinspection PyTypeChecker

位于正在标记的代码行上方。

at0kjp5o

at0kjp5o3#

看一下specifications of the expit function,没有任何东西说它允许提供标量参数--它调用numpy.ndarray。(因此是一个列表)是可以接受的,但这条消息不是警告--它是告诉你你编写的代码不符合函数的规范。numpy的标量广播特性将允许此代码运行,但PyCharm还没有聪明到能够推导出这一点。
注意:@cs95中的答案解释了如何禁用类型检查,它可能更适合作为可接受的答案。

ghhaqwfi

ghhaqwfi4#

正如@brunodd在之前的评论中所说,取消选中的正确标记是Type checker

  • 转到Settings/PreferencesCtrl + Alt + S
  • 在侧边栏上Inspections
  • Python选项卡
  • 取消选中Type Checker并点击Apply

这真的很烦人,PyCharm无法识别一些类型,即使它是正确的。

相关问题