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

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

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

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

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

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

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

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值