Python中浅拷贝和深拷贝

Python中浅拷贝与深拷贝


参考了《Python3从入门到实战》

一、浅拷贝

浅拷贝类似复制一个网页文件,产生新的网页文件和原来的网页文件是两个不同的对象,但他们的内容是网去哪一样的

	import copy
    
    a = ['hello',[2,3,4]]#如果a是一个简单的值,a 和 b是一样的 
    b = copy.copy(a)
    print(a) 
    print(b)
    print(a is b) 
    print(id(a))
    print(id(b))
    #尽管a,b是不同的对象,但是两个对象对应元素的值是一样的,引用的是同一个对象.
    print(id(a[0]))
    print(id(b[0]))
    a[1] = 'xusong'
    print(b[1])#这样看起来好像并不会修改b
    
    '''
    ['hello', [2, 3, 4]]
    ['hello', [2, 3, 4]]
    False
    2776165785024#内存地址有可能不同,但是应该符合规则
    2776165775296
    2776165704944
    2776165704944
    [2, 3, 4]
    '''

二、深拷贝

深拷贝:和浅拷贝不同,深拷贝会对这个对象的嵌套对象进行复制(拷贝),并且对嵌套对象的嵌套对象进行拷贝(浅拷贝只对最外层的对象包含的元素值进行拷贝)

	a = ['hello',3,[3,5,6]]
    b = a.copy()
    a[2][1] = 9
    print(b[2][1])#这样就可以修改,虽然他们的id还是不一样的(因为引用不同)
    print(id(a))
    print(id(b))
    print(id(a[0]))
    print(id(b[0]))
    '''
    运行结果如下:
    
     9
    2776165806336
    2776182493248
    2776165704944
    2776165704944   
    '''
	a = ['hello',3,[3,5,6]]
    b = a#这里直接改成=
    a[2][1] = 9
    print(b[2][1])#现在我们发现,他们连所有的内存地址都一样了
    print(id(a))
    print(id(b))
    print(id(a[0]))
    print(id(b[0]))
    '''
    运行结果如下:
    
     9
    2776165883328
    2776165883328
    2776165704944
    2776165704944
    '''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值