30 Python 深拷贝和浅拷贝

Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。

深拷贝:copy.copy(), 创建一个新对象,但是不会拷贝对象中的成员;

浅拷贝:copy.deepcopy(),创建一个新对象,并且递归地复制它包含的所有成员;

#!/usr/bin/python
# -*- coding: utf-8 -*-
import copy

obj = [[1],2]
a = copy.copy(obj)
b = copy.deepcopy(obj)

obj[0].append('obj')
print obj,a,b
a[0].append('a')
print obj,a,b

b[0].append('b')
print obj,a,b

obj[0][0] = 'obj'
print obj,a,b
a[0][0] = 'a'
print obj,a,b

'''
[[1, 'obj'], 2]          [[1, 'obj'], 2]          [[1], 2]
[[1, 'obj', 'a'], 2]     [[1, 'obj', 'a'], 2]     [[1], 2]
[[1, 'obj', 'a'], 2]     [[1, 'obj', 'a'], 2]     [[1, 'b'], 2]
[['obj', 'obj', 'a'], 2] [['obj', 'obj', 'a'], 2] [[1, 'b'], 2]
[['a', 'obj', 'a'], 2]   [['a', 'obj', 'a'], 2]   [[1, 'b'], 2]
'''

转载请标明出处,原文地址(http://blog.csdn.net/lis_12/article/details/54381555).

如果觉得本文对您有帮助,请点击‘顶’支持一下,您的支持是我写作最大的动力,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值