字符串驻留

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 编译优化相关,行为称为字符串驻留,但驻留的字符串中只包含字母,数字或下划线。

相关文章:

  • 2021-11-24
  • 2021-05-28
  • 2021-06-19
  • 2022-12-23
  • 2021-12-10
  • 2022-03-09
  • 2021-06-01
猜你喜欢
  • 2021-06-11
  • 2021-10-17
  • 2021-06-29
  • 2022-01-14
  • 2021-05-23
相关资源
相似解决方案