2026-10-29 17:41:20
我理解赋值、浅拷贝和深拷贝的概念及区别,具体如下:
赋值赋值操作的核心是引用传递。当使用赋值操作符(如 =)将一个对象赋值给变量时,变量中存储的并非对象本身,而是该对象在内存中的引用地址。此时,多个变量可能指向同一对象,修改其中一个变量会影响所有引用该对象的变量。示例:
original_list = [1, 2, [3, 4]]assigned_list = original_list # 赋值操作assigned_list[0] = 99 # 修改外层元素print(original_list) # 输出: [99, 2, [3, 4]](原对象被修改)assigned_list[2][0] = 55 # 修改嵌套列表print(original_list) # 输出: [99, 2, [55, 4]](嵌套对象也被修改)浅拷贝浅拷贝会创建一个新对象,并递归复制源对象的第一层属性。但对于嵌套对象(如列表中的列表、字典中的字典),浅拷贝仅复制其引用,而非创建新对象。因此,源对象与拷贝对象共享嵌套对象,修改嵌套内容会相互影响。实现方式:
Python 中可通过 copy.copy() 或切片操作(如 list[:])实现。示例:
import copyoriginal_list = [1, 2, [3, 4]]shallow_copied_list = copy.copy(original_list) # 浅拷贝shallow_copied_list[0] = 99 # 修改外层元素print(original_list) # 输出: [1, 2, [3, 4]](外层独立)shallow_copied_list[2][0] = 55 # 修改嵌套列表print(original_list) # 输出: [1, 2, [55, 4]](嵌套对象共享)深拷贝深拷贝会创建一个完全独立的新对象,并递归复制所有层级的属性。对于嵌套对象,深拷贝会创建新对象并复制其内容,而非共享引用。因此,源对象与拷贝对象完全隔离,修改任何一方都不会影响另一方。实现方式:
Python 中通过 copy.deepcopy() 实现。示例:
import copyoriginal_list = [1, 2, [3, 4]]deep_copied_list = copy.deepcopy(original_list) # 深拷贝deep_copied_list[0] = 99 # 修改外层元素print(original_list) # 输出: [1, 2, [3, 4]](外层独立)deep_copied_list[2][0] = 55 # 修改嵌套列表print(original_list) # 输出: [1, 2, [3, 4]](嵌套对象也独立)关键区别总结:
应用场景: