您的位置: 网站首页> python进阶> 当前文章

浅拷贝、深拷贝、==和is介绍

老董2019-06-06156围观,100赞

  浅拷贝与深拷贝:

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

  深拷贝是对于一个对象所有层次的拷贝(递归)

# -*- coding: utf-8 -*-
import copy
print("以下是浅拷贝,a变化后b也变化")
a = [1,2,3]
b = a

print(a,id(a))
print(b,id(b))

a.append("哈哈")
print(a,id(a))
print(b,id(b))

print("以下是深拷贝,a变化后b未变化")
a = [1,2,3]
b = copy.deepcopy(a)
print(a,id(a))
print(b,id(b))

a.append("哈哈")
print(a,id(a))
print(b,id(b))

print("以下代码助你进一步理解拷贝")
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = c
print(c,id(c))
print(d,id(d))
e = copy.deepcopy(c)
print(e,id(e))
a.append("哈哈")
print(c,id(c))
print(d,id(d))
print(e,id(e))

D:python3installpython.exe D:/python/py3script/python66_2.py
以下是浅拷贝,a变化后b也变化
[1, 2, 3] 2740365258824
[1, 2, 3] 2740365258824
[1, 2, 3, '哈哈'] 2740365258824
[1, 2, 3, '哈哈'] 2740365258824
以下是深拷贝,a变化后b未变化
[1, 2, 3] 2740365258888
[1, 2, 3] 2740365193096
[1, 2, 3, '哈哈'] 2740365258888
[1, 2, 3] 2740365193096
以下代码助你进一步理解拷贝
[[1, 2, 3], [4, 5, 6]] 2740365193096
[[1, 2, 3], [4, 5, 6]] 2740365193096
[[1, 2, 3], [4, 5, 6]] 2740365193032
[[1, 2, 3, '哈哈'], [4, 5, 6]] 2740365193096
[[1, 2, 3, '哈哈'], [4, 5, 6]] 2740365193096
[[1, 2, 3], [4, 5, 6]] 2740365193032

Process finished with exit code 0


  is 是比较两个引用是否指向了同一个对象(引用比较)。

  == 是比较两个对象是否相等。

# -*- coding: utf-8 -*-
import copy
a = [1,2,3]
b = a
print(b == a)
print(b is a)

c = copy.deepcopy(a)
print(c == a)
print(c is a)

D:python3installpython.exe D:/python/py3script/python66_2.py
True
True
True
False

Process finished with exit code 0

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会

文章评论

    浅拷贝、深拷贝、==和is介绍文章写得不错,值得赞赏

站点信息

  • 网站程序:Laravel
  • 客服微信:a772483200