代码改变世界

小数据池.is和==的区别

2018-09-21 19:32  他曾是少年  阅读(227)  评论(0)    收藏  举报

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

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

在python中 -5~256 之间的整数会被驻留在内存中,将一定规则的字符串缓存.在使用的时候,内存中只会创建一个该数据的对象 保存在小数据池中,当使用的时候直接从小数据池中获取对象的内存引用,而不需要创建一个新的数据,这样会节省更多的内存区域.

 

优点:能够提高一些字符串,整数的处理速度,省略创建对象的过程.

缺点:在 "池" 中创建或者插入需要花费更多的时间.

对于数字: -5~256之间的整数会被加到小数据池中,每次使用都是同一个对象.

对于字符串:

   1.如果字符串的长度是0或者是1,都会默认进行缓存

   2.字符串长度大于1,但是字符串中只包含字母,数字,下环线时才会保存

   3.用乘法得到的字符串 ①.乘数为1,仅包含数字,字母,下环线时会被缓存.如果包含其他字符,二长度<=1 也会被驻存 ②.乘数大于1,仅包含数字,字母,下划线这个时候会被缓存,但字符串场地不能大于20.

   4.指定驻留.我们可以通过sys模块中的inter()函数来指定要驻留的内容.

二  is和==:

  ==判断左右两端的值是否相等,是不是一致.

  is判断左右两端内容的内存地址是否一样.

  我们可以认为,如果内存地址相同.那么值一定是相等的,如果值相等则不一定是同一个对象.