字符串的+=操作和=+操作的机制是什么?

dodopy
  • 2.3k
# 三次a引用的对象一样
>>> a = 's2@'
>>> id(a)
49220672
>>> a = a + 's'
>>> id(a)
49220672
>>> a += '@'
>>> id(a)
49220672
# 后两次a引用的对象一样
>>> a = '#$@#$@'
>>> id(a)
49220544
>>> a += '23'
>>> id(a)
49302888
>>> a = a + 'sd'
>>> id(a)
49302888
# 三次a引用的对象都不一样
>>> a = '@#$#@%'
>>> id(a)
49220608
>>> a += '^%&%&'
>>> id(a)
49302728
>>> a = a + '&^**%$^'
>>> id(a)
49296880

是什么原因导致出现三种不同的结果。

回复
阅读 689
1 个回答

产生这个的原因是python当中的池化机制,简单的常用的较短的字符串会存在内存当中,利用内存池技术来提高性能。

具体的可以参考这个回答如何理解python中的池化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏