zoukankan      html  css  js  c++  java
  • Python-字典引用赋值变量之发现

    1. python中把一个字典的value赋值给变量,修改变量,被引用是字典的value也会被修改。
      值的注意的是,字典里的Key和Value都是对象的引用,不是对象本身。引用没有变,变得只是引用地址空间的值。
      实测该情况,对于value为字典或者列表的引用赋值,之后修改后,原有字典的value被修改。
      猜测字典,列表,集合引用的是地址空间里的值,这些数据类型会被修改。
    d1 = {'k1':[1,2,3,4,5]}
    t1 = d1['k1']
    t1[0] = 9
    print(d1['k1'])     # [9, 2, 3, 4, 5]
    #
    d2 = {'k1':'v1'}
    t2 = d2['k1']
    print(t2)            # v1
    t2 = 'v2'
    print(d2)           # {'k1': 'v1'}
    #
    d3 = {'k1':{'kk1':'v1'}}
    t3 = d3['k1']
    print(t3)            # {'kk1': 'v1'}
    t3['kk1'] = 'v2'
    print(d3)           # {'k1': {'kk1': 'v2'}}
    
    1. 对于不需要改变引用字典的内部结构的情况,可以使用深拷贝
    import copy
    d4 = {'k1':[1,2,3,4,5]}
    t4 = copy.deepcopy(d4['k1'])
    t4[0] = 9
    print(d4)   # {'k1': [1, 2, 3, 4, 5]}
    
  • 相关阅读:
    mysql 数据库 II(数据类型)
    mysql 数据库 I
    网络协议
    Python 类IV(类成员,异常处理等)
    Python 类III(三大特性,约束,super)
    Python 类II
    类加载机制
    Java新篇章之集合
    Java 类类型之 String 类型
    java 多态
  • 原文地址:https://www.cnblogs.com/yunweixiaoxuesheng/p/8303426.html
Copyright © 2011-2022 走看看