zoukankan      html  css  js  c++  java
  • Python学习笔记函数之copy()和deepcopy()

    随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你可能不希望

    这些变动影响原来的列表或字典。要做到这一点,Python提供了名为copy的模块,其中包含copy()和deepcopy()函数。

    第一个函数copy.copy(),可以用来复制列表或字典这样的可变值,而不是只复制引用。

      两者的区别是copy.copy()是这复制了列表或字典的值,但是引用还是同一个。而copy.deepcopy()是产生一个新的

    引用使新的变量和被复制变量引用不同。看下面的示例代码:

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      1、copy.copy(),示例代码:

    #
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    import copy
    spam = ['A','B','C','D',[1,2,3,4]]
    cheese = copy.copy(spam)
    spam[0] = 42
    print(spam)
    

      运行结果:

      根据结果可以看出,使用copy.copy()函数时,cheese是复制了spam列表引用,对spam列表操作时,也会对cheese列表产生影响。这也被称为浅copy。

      2、deepcopy.copy(),示例代码: 

    #
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    import copy
    spam = ['A','B','C','D',[1,2,3,4]]
    cheese = copy.deepcopy(spam)#不同部分
    spam[0] = 42
    print(spam)
    

      运行结果:

      根据结果可以看出,使用deepcopy()时,对spam列表操作不会对cheese列表产生影响,这是因为deepcopy()是产生一个新的引用,这样spam和cheese

    是两个不同的引用所以在对spam列表操作时不会对cheese列表产生影响。

     

  • 相关阅读:
    FCKeditor的问题
    每天学习一点点(2010年二月)
    Excel使用小技巧
    JavaScript 取页面属性
    附加 数据库错误 5120
    CSS中元素水平居中显示的方法
    css中height:100%不起作用的解决方法
    SQL SERVER数据库开发之存储过程应用(转载)
    双路由器双小型交换机组建公司网络,2个公网IP上网案例(转载)
    如何解决VS2005没有代码智能提示(联想)的问题(转载)
  • 原文地址:https://www.cnblogs.com/lirongyang/p/9538495.html
Copyright © 2011-2022 走看看