字符串驻留

Python支持字符串驻留机制,即:对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。

这一点不适用于长字符串,即长字符串不遵守驻留机制,下面的代码演示了短字符串和长字符串在这方面的区别。

>>> a = '1234'
>>> b = '1234'
>>> id(a) == id(b)
True
>>> a = '1234'*50
>>> b = '1234'*50
>>> id(a) == id(b)
False

>>> a = 'something'
>>> b = 'some'+'thing'
>>> id(a) == id(b)
True

下面例子结果是False:

>>> a = '@hello'
>>> b = '@he'+'llo'
>>> id(a) == id(b)
False

这与Cpython 编译优化相关,行为称为字符串驻留,但驻留的字符串中只包含字母,数字或下划线。

 posted on 2020-01-02 22:01  Rannie`  阅读(228)  评论(0编辑  收藏  举报
去除动画
找回动画