比较具有相同int值的变量时,'is'运算符的不同行为

时间:2018-02-27 10:44:14

标签: python python-3.x

当我遇到以下代码的奇怪行为时,我正在使用交互式shell中的'is'运算符:

首先按预期进行:

>>> x = 11

>>> y = 11

>>> x is y

True

但是当我尝试这个时:

>>> x = 987456

>>> y = 987456

>>> x is y

False

在使用id()函数进一步尝试之后,我注意到同一对象上的整数> 256点,而其他对象则没有。我还注意到这种行为只发生在python交互式shell中。这种行为有什么用?

1 个答案:

答案 0 :(得分:-1)

is检查内存地址。围绕C类型的包装器的不可变对象往往具有相同的内存地址,而其他对象则没有。这里的区别是存储整数所需的字节数。