py深拷贝为什么子对象的id仍相同?

image
有教程上说:

深度拷贝会递归地拷贝原对象中的每一个子对象,因此拷贝后的对象和原对象互不相关。

但这里好像证明这句话不对, 是什么原因呢?

阅读 1.9k
2 个回答

这不是深拷贝的问题,是字符串的问题……

py 中有字符串池的概念(与 Java 中字符串常量池概念类似),为了节省内存、提高性能,重复定义值相同、长度较短的字符串不会重复分配内存空间。

具体原理你可以自行搜索 “py 字符串驻留机制”。


image.png

py中的字符串对象是不可变的,没有深拷贝这一说。

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