Python: type(i) is int..但我是 int = 假



我很确定我在做一些愚蠢的事情,但无法弄清楚它是什么。

predict  = fn_abc(data)
In[3]: predict
Out[3]: array([2])
In[4]: type(predict)
Out[4]: numpy.ndarray

现在用int包裹我的fn_abc

predict  = int(fn_abc(data))
In[6]: predict
Out[6]: 2
In[7]: type(predict)
Out[7]: int
In[8]: predict is int
Out[8]: False

我做错了什么?

Use isinstance.

isinstance(predict, int)

predict is int检查整数是否与整数类型对象具有相同的标识。它没有。但是,该整数的类型等于整数类型对象。检查整数的类型是否等于整数类型对象。

>>> type(2) == int
True

您可以扩展此检查以使用内置函数isinstance()处理子类:

>>> isinstance(2, int)
True
>>> isinstance(True, int)
True

第二个测试检查True是否是整数的实例。因为boolint的一个子类,这是准确的。这对于用户定义的类很有用 - 如果你有一个Person类,有一个Customer子类,isinstance()会告诉你Customer对象也是一个Person。但是,并非所有Person对象都是Customer对象,因此它不是可交换的(如下所示,带有 bool 和整数):

>>> isinstance(2, bool)
False
type(predict) is int

预测为 2;is int 检查其他项是否为类型"int",但 2 不是类型。

还有一个 isinstance 方法会更好。

相关内容

最新更新