当应用PEP8时#34;如果cond为False" PyCharm用np.isinf
np.isnan
或>>> import numpy as np
... assert not np.isnan(0), "first test failed"
... assert np.isnan(0) is False, "second test failed"
AssertionError: second test failed
提出的成语,我们得到了令人惊讶的行为。
bool
答案 0 :(得分:3)
问题在于numpy的逻辑函数不返回numpy.bool_
,而是返回>>> np.bool_(False) is False
False
的实例,这是一种不同的类型。因此,
dtype
可以考虑使用这些函数的bool
参数强制>>> type(np.isnan(0, dtype=bool))
numpy.bool_
输出,但这不会起作用。
>>> bool(np.isnan(0)) is False
True
解决方案是明确地对bool进行演绎:
if cond is False
更好:永远不要使用cond
成语,当not cond
不是布尔值时,这个成语可能会中断。只需使用>>> not np.isnan(0)
True
:
if cond is False
实际上,我没有在PEP8中找到{{1}}成语的推荐; numpy's logic functions
Yes: if greeting: No: if greeting == True: Worse: if greeting is True:
我不知道为什么这个成语是由PyCharm提出的。不要使用它,我被它咬了,你也没理由这样做。