python 小数据池、代码块
# 同一代码块的缓存机制
# Python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其重用
# id 相同,那么值一定是相同的;值相同,id不一定相同
# 所有的 int / bool /几乎所有的字符串
# (如字符串'太白@5847395QQ0743895*&^%$#((&_+(())' *2 不符合规则,带有*号 与很多特殊字符)
# == 判断的是值
l1 = [1, 2, 3]
l2 = [1, 2, 3]
print(l1 == l2)# True
# is 判断的是地址
print(id(l1))
print(id(l2))
print(l1 is l2) # False
s1 = 'Alex'
s2 = 'Alex'
print(id(s1), id(s2)) # True
i1 = 100
i2 = 100
print(id(i1))
print(id(i2))
# 不同代码块的缓存机制:小数据池
# 适用的对象: int bool str
# 具体细则: -5 --256 ,bool , 满足规则的字符串(比同一个代码块的范围要小)
# 提升性能,节省空间
# 交互式命令每一行是不同的代码块,同一个文件是一个代码块,可以用交互式命令验证不同代码块的缓存
>>> i = 800
>>> i1 = 800
>>> print(i is i1)
False
>>> k = 123
>>> k1= 123
>>> print(k is k1)
True
总结:
如果在同一代码块下,则采用同一代码块下的换缓存机制。
如果是不同代码块,则采用小数据池的驻留机制。
同一个代码块的缓存机制比小数据池的范围大
小数据池 int 的范围是-5----256
优点:提升性能,节省空间