在Python中,可以使用深拷贝(deepcopy)来创建不同行为的不可变对象内的可变对象的副本。深拷贝会递归地复制所有的嵌套对象,确保每个对象都是独立的。下面是一个示例代码:
import copy
# 定义一个可变对象
mutable_obj = [1, 2, 3]
# 定义一个不可变对象,其中包含可变对象
immutable_obj = (mutable_obj,)
# 进行深拷贝
new_immutable_obj = copy.deepcopy(immutable_obj)
# 修改可变对象
mutable_obj.append(4)
# 打印原始可变对象和不可变对象
print("原始可变对象:", mutable_obj)
print("原始不可变对象:", immutable_obj)
# 打印深拷贝后的不可变对象
print("深拷贝后的不可变对象:", new_immutable_obj)
输出结果为:
原始可变对象: [1, 2, 3, 4]
原始不可变对象: ([1, 2, 3, 4],)
深拷贝后的不可变对象: ([1, 2, 3],)
可以看到,原始不可变对象中的可变对象被深拷贝后的不可变对象中的可变对象分离开来了,对原始可变对象的修改不会影响深拷贝后的不可变对象。
上一篇:不同行数的问题