copy模块


Python 中赋值语句不复制对象,而是在目标和对象之间创建**绑定 (bindings)**关系。对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象。

本模块提供了通用的浅层复制和深层复制操作:

  • copy.copy()
    • 浅复制,创建的对象中,每个子对象都是对源子对象的引用
  • copy.deepcopy()
    • 深拷贝,将被复制的对象完全拷贝
# 关于拷贝的机制

import copy
a=[1,2,3,['a','b']] #原始对象
b=a                 #赋值,传对象的引用
c=copy.copy(a)      #浅拷贝
d=copy.deepcopy(a)  #深拷贝

a.append(5)
a[3].append('c')

print(a)
# -->[1, 2, 3, ['a', 'b', 'c'], 5]

print(b)
# -->[1, 2, 3, ['a', 'b', 'c'], 5]

print(c)
# -->[1, 2, 3, ['a', 'b', 'c']]

print(d)
# -->[1, 2, 3, ['a', 'b']]
#关于同数据,字符串+=

a="abc"
b=a
print(id(a),id(b))  #-->1652389179952 1652389179952
c="abc"
d=""
d+=c
print(id(c),id(d))  #-->1652389179952 1652389179952
print(d)            #-->abc
d+=c
print(d,id(d),id(c))#-->abcabc 1652431257904 1652389179952

文章作者: ╯晓~
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ╯晓~ !
评论
  目录