zoukankan      html  css  js  c++  java
  • python的深浅copy

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    a='abc'
    b=a
    a='def'
    print(b)        #这里打印的是abc
    #1.执行a = 'abc',解释器创建了字符串'abc'和变量a,并把a指向'ABC'
    #2.执行b=a,解释器创建了变量b,并把变量b指向了变量a所指向的abc
    #3.执行a = 'def',解释器创建了字符串'def',并把a的指向改为'def',但b并没有更改:
    #所以最后打印的是abc
    
    
    name={
        "z":{"age":20,"jx":"tn"},
        "h":{"age":20,"jx":"tn"},
        "x":2,
    }
    
    name2=name
    name['z']['age']='22'
    print('name is: ',name)
    print('name2 is: ',name2)
    #结果
    # name is:  {'z': {'jx': 'tn', 'age': '22'}, 'h': {'jx': 'tn', 'age': 20}}
    # name2 is:  {'z': {'jx': 'tn', 'age': '22'}, 'h': {'jx': 'tn', 'age': 20}}
    #这里相当于做了一个别名,软连接,没有再占用一块内存。这样无论你更改name还是name2都是操作的一份数据。
    #跟第一个例子是有区别的,对于字符串和数字一些数据类型的处理,会在内存创建一份新的数据,但list,元组,字典,不会这样处理。
    
    #拷贝第一层
    name3=name.copy()
    name['x']='原字典改变后'
    name['h']['age']='Age'
    print(name)
    print(name3)
    
    #完全独立的数据,占用和元数据相同大小的内存
    import copy
    name4=copy.deepcopy(name)
  • 相关阅读:
    C#Redis分布式缓存
    CPU核心数
    关于RSA加密
    C#.NET中的CTS、CLS和CLR
    silverlight依赖属性
    silverlight imagesource赋值与转换
    #我的java之多态和接口#
    #什么是 spring boot#
    #替换eclipse自带的maven#
    #从零开始的maven异世界#
  • 原文地址:https://www.cnblogs.com/Z-style/p/5544508.html
Copyright © 2011-2022 走看看