赞
踩
赋值,深拷贝与浅拷贝的不同
赋值是用一个其他的变量名替代原来的对象,但指向的地址没有变化
浅拷贝指的是 只拷贝当前对象,但拷贝的对象与被拷贝的对象公用同一个子对象(即公用的子对象的地址相同)。
深拷贝指的是 不仅当前对象进行拷贝,被拷贝对象的子对象同样被拷贝(不公用子对象)
赋值:
a=1
print(id(a))
b=a
print(id(b))
浅拷贝的使用方法
import copy
新对象=copy.copy(对象)
深拷贝的使用方法
新对象=copy.deepcopy(对象)
代码演示:
- #赋值
- a=1
- print(id(a))
- b=a
- print(id(b))
- #浅拷贝 python拷贝一般都是浅拷贝 拷贝时对象,包含的子对象内容不拷贝,因此源对象与拷贝对象会引用同一个子对象
- class cpu:
- pass
- class disk:
- pass
- class Computer(cpu,disk):
- def __init__(self,cpu,disk):
- super().__init__()
- self.cpu=cpu
- self.disk=disk
-
- #浅拷贝
- cpu1=cpu()
- disk1=disk()
- computer=Computer(cpu1,disk1)
- import copy
- computer2=copy.copy(computer)
- print(computer,computer.cpu)
- print(computer2,computer2.cpu)
-
-
- cpu1=cpu()
- disk1=disk()
- computer=Computer(cpu1,disk1)
- import copy
- computer2=copy.deepcopy(computer)
-
- print(computer2,computer2.cpu)
- print(computer,computer.cpu)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。