Python克隆对象的方法和示例

Python中克隆对象的方法有两种,一种是使用copy模块的copy()函数,另一种是使用copy.deepcopy()函数。

1. 使用copy.copy()函数

copy.copy()函数可以用来复制一个对象,但不会复制它的子对象,也就是说它只复制一个对象的最外层,而不会复制其子对象。

import copy

# 定义一个对象
obj = {'a': 1, 'b': [1, 2, 3]}

# 使用copy.copy()函数复制
obj_copy = copy.copy(obj)

# 修改原始对象
obj['a'] = 2
obj['b'][0] = 0

# 打印结果
print('原始对象:', obj)
print('复制对象:', obj_copy)

运行结果如下:

原始对象: {'a': 2, 'b': [0, 2, 3]}
复制对象: {'a': 1, 'b': [1, 2, 3]}

从上面的结果可以看出,使用copy.copy()函数复制后,原始对象的a属性发生了改变,但复制对象的a属性没有发生改变,而原始对象的b属性的第一个元素发生了改变,但复制对象的b属性的第一个元素没有发生改变,这就说明copy.copy()函数只复制了最外层的对象,而不会复制其子对象。

2. 使用copy.deepcopy()函数

copy.deepcopy()函数可以用来复制一个对象,它不仅会复制最外层的对象,还会复制其子对象。

import copy

# 定义一个对象
obj = {'a': 1, 'b': [1, 2, 3]}

# 使用copy.deepcopy()函数复制
obj_copy = copy.deepcopy(obj)

# 修改原始对象
obj['a'] = 2
obj['b'][0] = 0

# 打印结果
print('原始对象:', obj)
print('复制对象:', obj_copy)

运行结果如下:

原始对象: {'a': 2, 'b': [0, 2, 3]}
复制对象: {'a': 1, 'b': [1, 2, 3]}

从上面的结果可以看出,使用copy.deepcopy()函数复制后,原始对象的a属性发生了改变,但复制对象的a属性没有发生改变,而原始对象的b属性的第一个元素发生了改变,但复制对象的b属性的第一个元素也没有发生改变,这就说明copy.deepcopy()函数不仅复制了最外层的对象,还复制了其子对象。

本文链接:http://task.lmcjl.com/news/11418.html

展开阅读全文