当前位置:   article > 正文

Python 赋值、浅拷贝和深拷贝_python副本赋值

python副本赋值

赋值、浅拷贝和深拷贝是 Python 中用于创建对象副本的不同方式。它们之间的区别在于复制的程度和对原始对象和副本的影响。

  1. 赋值(Assignment):通过将一个对象的引用赋值给另一个变量,使这两个变量都指向同一个内存地址。赋值只是创建了一个指向原始对象的新引用,而没有创建新的对象。因此,在使用赋值操作时,如果修改其中一个变量所指向的对象,另一个变量也会反映出修改后的值。这是因为它们共享相同的内存地址。示例代码如下:
  1. import copy 
  2. original_list = [1, 2, 3]
  3. new_list = original_list # 赋值操作
  4. new_list.append(4)
  5. print(original_list) # 输出:[1, 2, 3, 4]
  1. 浅拷贝(Shallow Copy):浅拷贝创建了一个新的对象,但该对象只是原始对象的表面拷贝,其中包含的元素仍然是原始对象元素的引用。当我们进行浅拷贝时,只有最外层的数据结构被复制,而嵌套的对象则是共享的。因此,在修改浅拷贝的对象时,原始对象中的嵌套对象也会受到影响。可以使用 copy() 函数或切片操作来进行浅拷贝。示例代码如下:
  1. import copy
  2. original_list = [1, 2, [3, 4]]
  3. new_list = copy.copy(original_list) # 浅拷贝操作
  4. new_list[2].append(5)
  5. print(original_list) # 输出:[1, 2, [3, 4, 5]]
  1. 深拷贝(Deep Copy):深拷贝创建了一个全新的对象,包括原始对象及其嵌套对象的副本。完全独立于原始对象,即使对副本进行修改,原始对象也不会受到影响。可以使用 copy.deepcopy() 函数来进行深拷贝。示例代码如下:
  1. import copy
  2. original_list = [1, 2, [3, 4]]
  3. new_list = copy.deepcopy(original_list) # 深拷贝操作
  4. new_list[2].append(5)
  5. print(original_list) # 输出:[1, 2, [3, 4]]

总结起来,赋值只是创建了一个引用,指向同一内存地址的对象;浅拷贝创建了一个新对象,但其中的元素仍然是原始对象的引用;而深拷贝则是创建了一个全新的对象,包括原始对象及其嵌套对象的副本,彼此互不影响。根据对原始对象和副本之间关系的需要,选择适当的复制方式。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/71449
推荐阅读
相关标签
  

闽ICP备14008679号