Amy 原创整理|资料核验:2026-10-30
Python的赋值只是建立对象绑定,并不会复制对象。copy.copy创建新的外层复合对象,但仍放入对内部对象的引用;copy.deepcopy则递归复制内部对象。
教学示例:a = [[1], [2]],b = a.copy()之后,对b[0]执行append(9),a中的第一个小列表也会出现9,因为两边仍引用同一个内部列表。若只是给b增加一个新的外层元素,则不等于给a增加外层元素。
Amy建议排查“改了一份,另一份也变了”时,分别看外层容器和内部对象,而不是只确认变量名不同。也不要遇到问题就一律深拷贝:官方文档提醒,深拷贝可能连本来希望共享的内容也复制了,应先明确哪些部分需要独立。