python之小数据池

小数据池. ⼀一种数据缓存机制. 也被称为驻留留机制. 各⼤大编程语⾔言中都有类似的东⻄西. 在⽹网上
搜索常量量池,⼩小数据池指的都是同⼀一个内容.

小数据池只针对: 整数, 字符串串, 布尔值. 其他的数据类型不存在驻留留机制

在python中对-5到256之间的整数会被驻留留在内存中. 将⼀一定规则的字符串串缓存. 在使⽤用
的时候, 内存中只会创建⼀一个该数据的对象. 保存在⼩小数据池中. 当使⽤用的时候直接从⼩小数据
池中获取对象的内存引⽤用. ⽽而不需要创建⼀一个新的数据. 这样会节省更更多的内存区域.
优点: 能够提⾼高⼀一些字符串串, 整数的处理理速度. 省略略的创建对象的过程.
缺点: 在’池’中创建或者插入新的内容会花费更更多的时间.
对于数字: -5~256是会被加到⼩小数据池中的. 每次使⽤用都是同⼀一个对象.
对于字符串串:
1. 如果字符串串的⻓长度是0或者1, 都会默认进⾏行行缓存
2. 字符串串⻓长度⼤大于1, 但是字符串串中只包含字⺟母, 数字, 下划线时才会缓存
3. ⽤用乘法的到的字符串串. ①. 乘数为1, 仅包含数字, 字⺟母, 下划线时会被缓存. 如果
包含其他字符, ⽽而⻓长度<=1 也会被驻存, ②. 乘数⼤大于1 . 仅包含数字, 字⺟母, 下划
线这个时候会被缓存. 但字符串串⻓长度不能⼤大于20
4. 指定驻留留. 我们可以通过sys模块中的intern()函数来指定要驻留留的内容.
OK. 到⽬目前为⽌止. 我们已经了了解了了python的⼩小数据池的⼀一些基本情况了了. 但是!!!! 还有最后⼀一
个问题. ⼩小数据池和最开始的代码块有什什么关系呢?
同样的⼀一段代码在命令⾏行行窗⼝口和在py⽂文件中. 出现的效果是完全不⼀一样的.

在代码块内的缓存机制是不⼀一样的. 在执⾏行行同⼀一个代码块的初始化对象的命令时, 会检
查是否其值是否已经存在, 如果存在, 会将其重⽤用. 换句句话说: 执⾏行行同⼀一个代码块时, 遇到初始
化对象的命令时,他会将初始化的这个变量量与值存储在⼀一个字典中, 在遇到新的变量量时, 会先
在字典中查询记录, 如果有同样的记录那么它会重复使⽤用这个字典中的之前的这个值. 所以在
你给出的例例⼦子中, ⽂文件执⾏行行时(同⼀一个代码块) 会把a, b两个变量量指向同⼀一个对象.
如果是不同的代码块, 他就会看这个两个变量量是否是满⾜足⼩小数据池的数据, 如果是满⾜足
⼩小数据池的数据则会指向同⼀一个地址. 所以: a, b的赋值语句句分别被当作两个代码块执⾏行行, 但
是他们不满⾜足⼩小数据池的数据所以会得到两个不同的对象, 因⽽而is判断返回False.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值