python里面的is 和==的区别,还有小整数对象池

改bug的时候遇到了的一个很有意思的小问题,偶然间发现用is和==得出来的结果不一样

 我们知道python的数据是先开一块内存,再把引用连接上去来实现一个变量的,不同的变量存在不同内存里

所以可以看出is是判断的内存地址,==是判断的值

但是,如果这里值变成了10呢?

 这个地方就涉及到了小整数对象池,[-5,256]之间的数用的很频繁,所以python对这些数单独开辟了一块内存,

也就是说,当你创建一个a=10的时候并不是自己开辟了内存,而是系统早就帮你开好了,这里的a=10只是往上面

加一个名字叫a的引用,所以不管开多少个x=10,他们全都指向同一个地址

猜你喜欢

转载自blog.csdn.net/wzngzaixiaomantou/article/details/81355816