python中小整数对象池和大整数对象池和intern机制

python中解释器为了提升运行速度使用了小整数对象池,来避免为整数频繁定义与销毁内存空间。
小整数对象池定义的范围**[-5,256]**在这个范围的整数对象都是提前创建好的,不会被垃圾回收机制以内存垃圾回收,在这个范围内的整数使用的都是同一个对象(引用 id内存地址值相同)

>>> a=-5
>>> b=-5
>>> a is b
True
>>> a=256
>>> b=256
>>> a is b
True
>>> 

大整数对象池是在上述范围之外

>>> a=-6
>>> b=-6
>>> a is b
False
>>> a=257
>>> b=257
>>> a is b
False

intern机制:单个单词的字符串(长度不超过20)默认遵循intern机制,共用一个对象
对于其中含有空格的字符串,不遵循intern机制,不共用对象

>>> a="d d"   #其中含有空格
>>> id(a)
54362304
>>> b="d d"
>>> id(b)
54362240
>>> a==b
True
>>> a is b
False
>>> a="a"*20
>>> b="a"*20
>>> a is b
True
>>> a="b"*21
>>> b="b"*21
>>> a is b
False

但在pycharm中测试的话,每次运行时所有代码都加载在内存中,属于一个整体,所以这个时候是同一个对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值