快捷搜索:  汽车  科技

深拷贝和浅拷贝的应用场景(编码基础知识库)

深拷贝和浅拷贝的应用场景(编码基础知识库)

变量的赋值操作是如何进行的?

只是形成了两个变量,但实际上还是指向了同一个对象

class CPU: pass class Disk: pass class Computer: def __init__(self cpu disk): self.cpu = cpu self.disk = disk # (1)变量的赋值操作 cpu1 = CPU() cpu2 = cpu1 print('原始变量值cpu1:' cpu1 id(cpu1) '\n赋值变量值cpu2:' cpu2 id(cpu2))

深拷贝和浅拷贝的应用场景(编码基础知识库)(1)

什么叫类的浅拷贝?

Python代码中的拷贝一般都是浅拷贝。程序代码拷贝时,不对对象所包含的子对象的内容进行拷贝。 因此,在实际开发代码中,源对象与拷贝对象都会引用同一个子对象。

# (2)类的浅拷贝 disk = Disk() # 创建一个硬盘类的对象 print('硬盘类对象原始值:' disk) computer = Computer(cpu1 disk) # 创建一个计算机类的对象 import copy computer1 = copy.copy(computer) print('computer原始值:' computer computer.cpu computer.disk) print('computer浅拷贝:' computer1 computer1.cpu computer1.disk)

深拷贝和浅拷贝的应用场景(编码基础知识库)(2)

什么叫类的深拷贝?

Python中使用copy模块的 deepcopy() 函数,递归拷贝对象中所包含的子对象。此时,源对象和拷贝 所拥有的子对象也不相同。

# 类的深拷贝 computer2 = copy.deepcopy(computer) print('computer原始值:' computer computer.cpu computer.disk) print('computer深拷贝:' computer2 computer2.cpu computer2.disk)

深拷贝和浅拷贝的应用场景(编码基础知识库)(3)


深拷贝和浅拷贝的应用场景(编码基础知识库)(4)

猜您喜欢: