0
点赞
收藏
分享

微信扫一扫

python3教程:直接赋值,浅拷贝和深拷贝

1.定义

直接赋值:就是对象的引用(别名)

浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象

深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象

2.解释

  1. b = a: 赋值引用,a和b都指向同一个对象
    python3教程:直接赋值,浅拷贝和深拷贝_浅拷贝
  2. b = a.copy(): 浅拷贝,a和b都是一个独立的对象,但它们的子对象是指向统一对象(是引用)
    python3教程:直接赋值,浅拷贝和深拷贝_赋值_02
  3. b = copy.deepcopy(a): 深拷贝,a和b完全拷贝了父对象及其子对象,两者是完全独立的
    python3教程:直接赋值,浅拷贝和深拷贝_开发语言_03

3.示例

以下是直接赋值、浅拷贝和深拷贝之对比

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import copy

a = [1, 2, 3, 4, ['a', 'b']] #原始对象

b = a #直接赋值,原始对象的引用
c = copy.copy(a) #浅拷贝
d = copy.deepcopy(a) #深拷贝

a.append(5) #修改对象a
a[4].append('c') #修改对象a中的['a', 'b']列表对象

print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

以上实例执行输出结果为:

a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]


举报

相关推荐

0 条评论