写点什么

软件测试面试真题 | 请介绍一下 Python 中的深拷贝和浅拷贝

作者:测试人
  • 2022-10-28
    北京
  • 本文字数:832 字

    阅读完需:约 3 分钟

软件测试学习笔记分享


面试官问: 请介绍一下 Python 中的深拷贝和浅拷贝


考察点

  • 深拷贝、浅拷贝的概念和区别


技术点

  • 深拷贝的概念和实现

  • 浅拷贝的概念和实现

  • 深拷贝、浅拷贝的区别


创建副本


Python3 浅拷贝

  • copy.copy()

# shallow_copy.pyimport copyold = [[1, 2], [3, 4]]# 浅拷贝,得到副本new = copy.copy(old)print("Old list:", old)  # Old : [[1, 2], [3, 4]]print("New list:", new)  # New : [[1, 2], [3, 4]]# 给原始对象添加新元素old.append([5, 6])print("Old :", old)  # Old : [[1, 2], [3, 4], [5, 6]]print("New :", new)  # New : [[1, 2], [3, 4]]# 修改原始对象old[1][1] = "hogwarts"print("Old :", old)  # Old : [[1, 2], [3, "hogwarts"], [5, 6]]print("New :", new)  # New : [[1, 2], [3, "hogwarts"]]
复制代码


Python 深拷贝

  • copy.deepcopy()

# deep_copy.pyimport copyold = [[1, 2], [3, 4]]# 浅拷贝,得到副本new = copy.deepcopy(old)print("Old list:", old)  # Old : [[1, 2], [3, 4]]print("New list:", new)  # New : [[1, 2], [3, 4]]# 修改原始对象old[1][1] = "hogwarts"print("Old :", old)  # Old : [[1, 2], [3, "hogwarts"]]print("New :", new)  # New : [[1, 2], [3, 4]]
复制代码


深浅拷贝的区别

  • 浅拷贝构造一个新的复合对象,然后用在原始对象中找到的子对象的引用填充它。

  • 深拷贝构造一个新的复合对象,然后递归地用在原始对象中找到的子对象的副本填充它。


总结

  • 浅拷贝构造一个新的复合对象,然后用在原始对象中找到的子对象的引用填充它。可以使用 copy 模块的 copy()函数实现。

  • 深拷贝构造一个新的复合对象,然后递归地用在原始对象中找到的子对象的副本填充它。可以使用 copy 模块的 deepcopy()函数实现。

  • 浅拷贝和深拷贝之间的区别仅与复合对象有关,浅拷贝只是一个层次的拷贝,不会递归;而深拷贝的拷贝过程是递归的,可以拷贝出完全独立的副本。

软件测试学习笔记分享

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

还未添加个人签名 2022-08-29 加入

还未添加个人简介

评论

发布
暂无评论
软件测试面试真题 | 请介绍一下Python中的深拷贝和浅拷贝_Python_测试人_InfoQ写作社区