>>> 10000 is 10000
True
>>> a = 10000
>>> b = 10000
>>> a is b
False
>>> a = 1
>>> b = 1
>>> a is b
True
解释上面这个例子:
第一个,两个10000 PyIntObject都会在编译的时候就生成,而且因为他们被编译为了一个PyCodeObject所以两个10000是一样滴
第二个,当你在交互式解释器这么输入,a和b 所指向的10000会被存入两个不同的PyCodeObject,所以是不同的
第三个,两个1,存入了不同的PyCodeObject,可是CPython有小整数Cache, 所以不管生成几次1,都是一样滴
这些不同取决于交互式解释器的处理方式,所以测试这类内容,不要用交互式解释器,它里面做了一些不同滴事情。