当前位置:首页python > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 基础:浅拷贝 vs 深拷贝
  • 相关推荐

    最新推荐

    热门点击