Python 数字为int返回False

Python 数字为int返回False,python,python-3.x,Python,Python 3.x,当我这样做时: >>> 1 is int False 它返回False,即使我希望它返回True。尝试键入检查变量时也会发生相同的行为 >>> a = 1 >>> a is int False 我知道这与使用is而不是isinstance或type有关 有人能解释一下为什么在这种情况下使用is不起作用吗?从语义上讲,它将返回True而不是False是有意义的。1是一个int,int是一种类型 它们不能相等或是同一个对象,因此这两个is之间

当我这样做时:

>>> 1 is int
False
它返回False,即使我希望它返回True。尝试键入检查变量时也会发生相同的行为

>>> a = 1
>>> a is int
False
我知道这与使用is而不是isinstance或type有关

有人能解释一下为什么在这种情况下使用is不起作用吗?从语义上讲,它将返回True而不是False是有意义的。

1是一个int,int是一种类型

它们不能相等或是同一个对象,因此这两个is之间的is总是False检查对象是否实际上是同一个对象


所以这是一个误解什么是支票的问题。正确的方法确实是像以前一样使用iInstance。

您可能应该阅读is运算符。这个问题实际上是关于类在Python中是第一类对象,而不是关于is操作符本身的问题,我想@Tobias不确定,我相信OP正在阅读语句1是int,因为1是整数,这表明了对“是”的误解。@Tobias这是关于“是”的巨大误解。。。。这是一个非常非常好的理由,不去解释你想要的。我的问题是,从语义上讲,1为int是有意义的,但事实并非如此;与经典的问题相同:如果a==1或2:我们可以看到每一个week@Remolten:它与英语单词is的语义有关,但与Python运算符is的语义无关。@Jean-Françoisfafre:==不是以引用比较开始的,引用比较是最后的回退,它不涉及类型比较。你可以有像x=float'nan'这样的东西;x!=x、 同一对象与自身比较不相等,或1==1.0,不同类型的对象比较相等。@user2357112!你说得对。我将删除我的评论。但是,如果值不同,引用怎么可能等于最终回退?该死的x=float'nan'示例很好!!
>>> type(1)
<class 'int'>
>>> isinstance(1, int)
True
>>> type(1) is int
True