当我这样做时:
>>> 1 is int
False
它返回False
,即使我希望它返回True
。尝试对变量进行类型检查时会发生相同的行为。
>>> a = 1
>>> a is int
False
我了解这与使用is
代替isinstance
或type
有关。
>>> type(1)
<class 'int'>
>>> isinstance(1, int)
True
>>> type(1) is int
True
有人可以解释为什么在这种情况下使用is
无效吗?对我来说语义是有意义的,它会返回True
而不是False
。
答案 0 :(得分:3)
1
是int
,int
是类型。
它们不能相同或者是同一个对象,因此is
在这两个之间总是False
(is
检查对象实际上是否是同一个对象。)
所以这是一个误解is
检查的问题。确实正确的方法是像你一样使用isinstance
。