1. 浅拷贝

  • 浅拷贝是对于一个对象的顶层拷贝

通俗的理解是:拷贝了引用,并没有拷贝内容

a=[11,22,33]
print(id(a))
b=a#浅拷贝
print(id(b))
a.append(44)
print(a)
print(b)
a={'name':'xiaowang'}
print(id(a))
b=a
print(id(b))
a['id']=100
print(a)
print(b)

2. 深拷贝

  • 深拷贝是对于一个对象所有层次的拷贝(递归)
import copy
a=[11,22,33]
print(id(a))
b=copy.deepcopy(a)#深拷贝
print(id(b))#b的id和a的id不一样
print(b)
a.append(44)
print(a)
print(b)

3. 拷贝的其他方式

浅拷贝对不可变类型和可变类型的copy不同
import copy
a = [11,22,33]
b = copy.copy(a)
print(id(a))
a.append(44)
print(a)
print(b)
a = (11,22,33)
b = copy.copy(a)
print(id(a))
print(id(b))

 

 

分片表达式可以赋值一个序列
    a = "abc"

    b = a[:]
字典的copy方法可以拷贝一个字典
    d = dict(name="zhangsan", age=27)

    co = d.copy()
有些内置函数可以生成拷贝(list)
    a = list(range(10))

    b = list(a)
copy模块中的copy函数
    import copy

    a = (1,2,3)

    b = copy.copy(a)