当使用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的代码风格检查警告,或者这是一个坏主意,因为它们在其他情况下可能是正确的,而我无法专门调整警告?
4条答案
按热度按时间krugob8w1#
PyCharm根据源代码的类型提示确定您传递的参数不正确。
如何禁用
您的问题简化为找出如何禁用此类型检查。但是,请注意,
完全关闭检查并不是一个好的解决方案。大多数情况下PyCharm都能做对,这会提供有用的反馈。如果它做错了,最好向他们提出一张罚单,看看是否可以修复。
您可以这样做:
1.转到
Settings/Preferences
1.在侧栏上,单击“
Inspections
”(在“编辑器”类别下)1.展开
Python
选项卡1.向下滚动到
Type Checker
并取消选中PyCharm现在应该停止发出关于不正确的函数参数的警告。
ecbunoof2#
如果您想忽略该特定行,
然后您可以将
位于正在标记的代码行上方。
at0kjp5o3#
看一下specifications of the expit function,没有任何东西说它允许提供标量参数--它调用
numpy.ndarray
。(因此是一个列表)是可以接受的,但这条消息不是警告--它是告诉你你编写的代码不符合函数的规范。numpy
的标量广播特性将允许此代码运行,但PyCharm还没有聪明到能够推导出这一点。注意:@cs95中的答案解释了如何禁用类型检查,它可能更适合作为可接受的答案。
ghhaqwfi4#
正如@brunodd在之前的评论中所说,取消选中的正确标记是
Type checker
。Settings/Preferences
(Ctrl + Alt + S
)Inspections
Python
选项卡Type Checker
并点击Apply
这真的很烦人,PyCharm无法识别一些类型,即使它是正确的。