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).
如果觉得本文对您有帮助,请点击‘顶’支持一下,您的支持是我写作最大的动力,谢谢。