python教程

当前位置:首页 > python进阶 > 当前文章

python进阶

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

2019-06-06 185赞 老董笔记
每篇文章努力于解决一个问题!更多精品可移步文章底部。

  浅拷贝与深拷贝:

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

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

# -*- 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

文章评论

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