python的引用和浅拷贝和p深拷贝
2016-11-27 16:30
260 查看
环境:python2.7
import copy
a = [1, 2, 3, 4, 5, [1, 2, 3]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
print a
print b
print c
print d
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
a.append(6)
print a
print b
print c
print d
#[1, 2, 3, 4, 5, [1, 2, 3], 6]
#[1, 2, 3, 4, 5, [1, 2, 3], 6]
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
a = [1, 2, 3, 4, 5, [1, 2, 3]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a[5].append(6)
print a
print b
print c
print d
#[1, 2, 3, 4, 5, [1, 2, 3, 6]]
#[1, 2, 3, 4, 5, [1, 2, 3, 6]]
#[1, 2, 3, 4, 5, [1, 2, 3, 6]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
b是a的引用,a若改变b会随之改变;
c是a的浅拷贝,a内部对象若改变c不会随之改变,但a内部对象的子对象若改变,c会随之改变
d是a的深拷贝,a怎么改变d都不会改变
import copy
a = [1, 2, 3, 4, 5, [1, 2, 3]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
print a
print b
print c
print d
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
a.append(6)
print a
print b
print c
print d
#[1, 2, 3, 4, 5, [1, 2, 3], 6]
#[1, 2, 3, 4, 5, [1, 2, 3], 6]
#[1, 2, 3, 4, 5, [1, 2, 3]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
a = [1, 2, 3, 4, 5, [1, 2, 3]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a[5].append(6)
print a
print b
print c
print d
#[1, 2, 3, 4, 5, [1, 2, 3, 6]]
#[1, 2, 3, 4, 5, [1, 2, 3, 6]]
#[1, 2, 3, 4, 5, [1, 2, 3, 6]]
#[1, 2, 3, 4, 5, [1, 2, 3]]
b是a的引用,a若改变b会随之改变;
c是a的浅拷贝,a内部对象若改变c不会随之改变,但a内部对象的子对象若改变,c会随之改变
d是a的深拷贝,a怎么改变d都不会改变
相关文章推荐
- python 引用,拷贝,对象回收,弱引用
- Python 初体验之 对象的引用和拷贝
- Python中的引用和拷贝浅析
- python语法31[引用和拷贝]
- 解析Python中的变量、引用、拷贝和作用域的问题
- python语法31[引用和拷贝]
- python 引用,浅copy和深拷贝
- 初学 Python — 拷贝与引用
- python赋值和拷贝----一切皆对象,参数皆引用
- python 中的赋值、引用、拷贝、作用域
- python语法31[引用和拷贝]
- python中的对象拷贝示例 python引用传递
- python 对象拷贝——浅拷贝和深拷贝 之函数传递——值传递还是引用传递?
- Python中的引用和拷贝浅析
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python 引用和拷贝
- python 引用 浅拷贝 深拷贝
- 学习 python 连接字符串,替换,截取,引用,拷贝,is,def返回值,异常
- python 赋值的时候是引用,如果需要复制则需要注意深拷贝和浅拷贝的区别
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域