python字符串驻留机制的使用范围知识点详解

1、字符串的长度为0和1时。

2、符合标识符的字符串。

3、字符串只在编译时进行驻留,而非运行时。

4、[-5,256]之间的整数数字。

实例

>>> str1='jiumo'
>>> str2='jiumo'
>>> str1 is str2
True
>>> id(str1)
1979078421896
>>> id(str2)
1979078421896

知识点扩充:

驻留时机

所有长度为 0 和长度为 1 的字符串都被驻留

字符串只在编译时进行驻留,而非运行时

a = 'hi' # a变量被驻留
b = ''.join(['h', 'i']) # 变量不会被驻留
print(a is b) # False

原理

系统维护interned字典,记录已被驻留的字符串对象

当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1
若不存在,则记录a到interned中