python 中为了提高字符串的使用用效率和节约内存,对于由 字母、数字、下划线组成的标识符采用了 intern 机制,即对于短字符串,将其赋值给多个对象时,内存中只有一个副本,多个对象共享这个副本。长字符串不适用。

注:驻留机制发生在编译阶段,不是运行阶段。

例:

>>> a = '1'
>>> b = '1'
>>> a is b
True
>>> a = '-abc'
>>> b = '-abc'
>>> a is b
False
>>> a = 123
>>> b = '123'
>>> c = str(a)
>>> c is a
False

对没有默认使用 intern 机制的字符串强制使用驻留机制:

>>> import sys
>>> a = 123
>>> b = '123'
>>> c = sys.intern(str(a))
>>> c is a
True