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