Python中的浅拷贝、深拷贝和其他拷贝

  • A+
所属分类:Python

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用。

一般对于Python中的拷贝有三种解决方案:浅拷贝深拷贝和其他拷贝。

浅拷贝:浅拷⻉是对于⼀个对象的顶层拷⻉。通俗的理解是:拷⻉了引⽤,并没有拷⻉内容。

Python中的浅拷贝、深拷贝和其他拷贝

深拷贝:深拷⻉是对于⼀个对象所有层次的拷⻉(递归)。

Python中的浅拷贝、深拷贝和其他拷贝

进一步理解深拷贝:

Python中的浅拷贝、深拷贝和其他拷贝 Python中的浅拷贝、深拷贝和其他拷贝

其他拷贝:浅拷⻉对不可变类型和可变类型的copy不同。

Python中的浅拷贝、深拷贝和其他拷贝

分⽚表达式可以赋值⼀个序列:


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)

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: