【发布时间】:2017-09-25 15:21:34
【问题描述】:
当我这样做时:
>>> 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。
【问题讨论】:
-
您可能应该阅读
is运算符。它肯定不会像你认为的那样做。 -
这个问题实际上是关于类是 Python 中的一等对象,而不是关于
is运算符本身的问题,imo。 -
@Tobias 不确定,我相信 OP 将声明
1 is int解读为“1 是整数”,这表明对is所做的事情存在误解。 -
@Tobias 这是关于
is用途的巨大误解。 -
...这是一个非常非常好的理由不按你的意愿解释它。
标签: python python-3.x