• 七、浅拷贝和深拷贝


    name1 = 'alex'
    name2 = name1
    name1 = 'rooney'
    name2 = ?
    答案:name2还是等于alex,因为字符串的重新定义是在内存里面重新开辟一个空间,字典,列表,就是在原来的内存空间里面修改,所以上题如果是字典或者列表的话那name2的值就是rooney。
     
    总结:
    字符串:不紧跟=======》
    字典、列表:紧追不舍=======》
     
    11.copy ======》浅拷贝(只copy第一层,再往下它就不copy了)
    首先,我创建了一个这样的字典,里面有嵌套
    >>> for i in range(5):c[i] = []
     
    >>> c
    {0: [], 1: [], 2: [], 3: [], 4: []}
    >>> c[1]
    []
    >>> c[1].append({'b':'rooney'})
    >>> c
    {0: [], 1: [{'b': 'rooney'}], 2: [], 3: [], 4: []}
     
     
    然后,我用d=c,把c的值赋给了d,
    >>> d = c
    >>> d
    {0: [], 1: [{'b': 'rooney'}], 2: [], 3: [], 4: []}
    >>> c
    {0: [], 1: [{'b': 'rooney'}], 2: [], 3: [], 4: []}
     
     
    根据上面的说法,这时候我改变c的值,d也跟着变
    >>> c['rain'] = "test"
    >>>
    >>> c
    {0: [], 1: [{'b': 'rooney'}], 2: [], 3: [], 4: [], 'rain': 'test'}
    >>> d
    {0: [], 1: [{'b': 'rooney'}], 2: [], 3: [], 4: [], 'rain': 'test'}
     
     
    然后我让e=c.copy(),我们会发现,当c的值改变了,e并没有跟着改变
    >>> e=c.copy()
    >>> c['sun'] = "wwwwwww"
    >>> c
    {0: [], 1: [{'b': 'rooney'}], 2: [], 3: [], 4: [], 'rain': 'test', 'sun': 'wwwwwww'}
    >>> e
    {0: [], 1: [{'b': 'rooney'}], 2: [], 3: [], 4: [], 'rain': 'test'}
     
    最后我把c里面嵌套的字典的rooney改成了ramos,发现e的值也跟着变了
    >>> c[1][0]['b']
    'rooney'
    >>> c[1][0]['b']='ramos'
    >>> d
    {0: [], 1: [{'b': 'ramos'}], 2: [], 3: [], 4: [], 'rain': 'test', 'sun': 'wwwwwww'}
    >>> e
    {0: [], 1: [{'b': 'ramos'}], 2: [], 3: [], 4: [], 'rain': 'test'}
    >>>
    
    总结:
    浅拷贝的意思就是第一层我不拷贝,并且以后第一层的修改我也不会跟着变,但是里面嵌套的层的修改我还是会跟着变
    深拷贝的意思就是第一层我不拷贝,并且以后第一层的修改我也不会跟着变,但是里面嵌套的层的修改我也不跟着变,即相当于字符串一样,你变你的,我怎么都不跟着你变了,我完全独立了。
     
    如果你想深copy,就要介入python的一个独立的模块,名字就叫做copy
    import copy
    f = copy.deepcopy(c)
     
  • 相关阅读:
    ASP.NET MVC分部类的使用
    窗体初始化完毕后隐藏窗体
    让每个用户都有同样的输入法配置
    昨夜的失眠--从数据备份所想到的.
    电子书下载
    Microsoft .Net 框架 SDK 快速入门教程
    .net书籍代码下载 [雪冬寒'Blog]
    VISUAL C#.NET中文版WEB服务开发基础
    Citrix相关技术
    OA在线试用
  • 原文地址:https://www.cnblogs.com/steven9898/p/11329349.html
Copyright © 2020-2023  润新知