Python 基础:浅拷贝 vs 深拷贝
作者:野牛程序员:2025-12-22 10:49:30python阅读 1995
Python 基础:浅拷贝 vs 深拷贝
# /*
# Python 基础:浅拷贝 vs 深拷贝
# --------------------------------------------------------
# 在 Python 中,拷贝分为两种:
#
# 1) 浅拷贝(shallow copy)
# - 只复制最外层对象;
# - 内部嵌套对象仍然引用原对象;
# - 常使用 list.copy()、切片 [:]、copy.copy()。
#
# 2) 深拷贝(deep copy)
# - 递归复制所有层级对象;
# - 拷贝后的对象与原对象完全独立;
# - 使用 copy.deepcopy()。
#
# 下方示例清晰展示二者的区别。
# */
import copy
print("示例一:浅拷贝(内部对象是共享的)")
a = [1, [10, 20]]
b = copy.copy(a) # 或 a[:] 或 a.copy()
b[0] = 9
b[1].append(30)
print("原对象 a:", a)
print("浅拷贝 b:", b)
print("-" * 40)
print("示例二:深拷贝(完全独立的递归复制)")
a = [1, [10, 20]]
b = copy.deepcopy(a)
b[0] = 9
b[1].append(30)
print("原对象 a:", a)
print("深拷贝 b:", b)
# --------------------------------------------------------
# 结果说明:
# 浅拷贝:
# 修改 b[1] 内部列表,会影响 a[1],因为它们共享内部引用;
# 深拷贝:
# a 和 b 完全独立,互不影响。
#
# 要点总结:
# 1) 浅拷贝复制外层对象,不复制内部嵌套结构;
# 2) 深拷贝递归复制所有内容,生成完全独立的数据;
# 3) 常见可变类型需要深拷贝避免引用冲突。
# */
#
# 示例一:浅拷贝(内部对象是共享的)
# 原对象 a: [1, [10, 20, 30]]
# 浅拷贝 b: [9, [10, 20, 30]]
# ----------------------------------------
# 示例二:深拷贝(完全独立的递归复制)
# 原对象 a: [1, [10, 20]]
# 深拷贝 b: [9, [10, 20, 30]]野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:Python 基础:字符串反转
- 下一篇:Python 技巧:== 与 is 的区别
