python 直接赋值和copy的区别详解

 更新时间:2019年08月07日 16:50:35   作者:caizhanjin  
这篇文章主要介绍了python 直接赋值和copy的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

直接赋值和copy的区别:

  • 直接赋值:其实就是对象的引用(别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

例子:

dict1 = {'user':'runoob','num':[1,2,3]} 
dict2 = dict1       # 浅拷贝: 引用对象
dict3 = dict1.copy()  # 深拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用 
# 修改 data 数据
dict1['user']='root'
dict1['num'].remove(1) 
# 输出结果
print(dict1)
print(dict2)
print(dict3)

实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的,dict3 父对象进行了深拷贝,不会随dict1 修改而修改,子对象是浅拷贝所以随 dict1 的修改而修改。

{'user': 'root', 'num': [2, 3]}
{'user': 'root', 'num': [2, 3]}
{'user': 'runoob', 'num': [2, 3]}

例子:求打印的结果

def extend_list(val, list=[]):
  list.append(val)
  return list
list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a') 
print("list1 = %s" % list1)
print("list2 = %s" % list2)
print("list3 = %s" % list3)

输出结果:

list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python进阶学习之你真的懂元组吗?

    Python进阶学习之你真的懂元组吗?

    在我们学习python的过程中,对元组的介绍通常是成为”不可变的列表“,但是这其实并没有完全的概括元组的功能。在本文中,我们将会介绍元组作为记录的功能,话不多说我们开始吧
    2023-04-04
  • Python分割单词和转换命名法的实现

    Python分割单词和转换命名法的实现

    本文主要介绍了Python分割单词和转换命名法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 利用Python轻松实现视频转GIF动图

    利用Python轻松实现视频转GIF动图

    在看视频的时候觉得某段非常有意思想弄成动图,但是无从下手!本文就将介绍如何利用Python搞定这一需求,感兴趣的小伙伴可以学习一下
    2022-01-01
  • Python3.9新特性详解

    Python3.9新特性详解

    这篇文章主要介绍了Python3.9新特性详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • python 使用事件对象asyncio.Event来同步协程的操作

    python 使用事件对象asyncio.Event来同步协程的操作

    这篇文章主要介绍了python 使用事件对象asyncio.Event来同步协程的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python实现网页录音效果

    python实现网页录音效果

    这篇文章主要为大家详细介绍了python实现网页录音效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Python基于matplotlib实现绘制三维图形功能示例

    Python基于matplotlib实现绘制三维图形功能示例

    这篇文章主要介绍了Python基于matplotlib实现绘制三维图形功能,涉及Python使用matplotlib模块进行三维图形绘制相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • python冒泡排序算法的实现代码

    python冒泡排序算法的实现代码

    这篇文章主要介绍了python冒泡排序算法的实现代码,大家参考使用
    2013-11-11
  • 介绍Python中的fabs()方法的使用

    介绍Python中的fabs()方法的使用

    这篇文章主要介绍了介绍Python中的fabs()方法的使用,是Python入门当中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 详解Python locals()的陷阱

    详解Python locals()的陷阱

    这篇文章主要介绍了详解Python locals()的陷阱,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论