• 【python】赋值、copy浅拷贝和deepcopy深拷贝


    赋值: 其实就是对象的引用(别名),b = a: 赋值引用,a 和 b 都指向同一个对象。
    浅拷贝(copy.copy): 只拷贝父对象,不会拷贝对象的内部的子对象。 b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
    深拷贝(copy.deepcopy) 深拷贝 拷贝对象及其子对象
    一个很好的例子:b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

    注意事项:这里面说的拷贝是指只要拷贝了就保持两个对象的独立了

    """赋值示例"""
    a = {"a": [1,2,3],"b":"test"}
    b=a
    a["a"][0]=2
    a["b"]="paulwinflo"
    print(a)
    #>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
    print(b)
    #>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
    
    """浅拷贝示例"""
    a = {"a": [1,2,3],"b":"test"}
    b=a.copy()
    a["a"][0]=2
    a["b"]="paulwinflo"
    print(a)
    #>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
    print(b)
    #>>>{'a': [2, 2, 3], 'b': 'test'} #因为浅拷贝是对父对象的拷贝,也就是新的父对象保持独立,不受老的父对象影响
    
    """深拷贝示例"""
    import  copy
    a = {"a": [1,2,3],"b":"test"}
    b=copy.deepcopy(a)
    a["a"][0]=2
    a["b"]="paulwinflo"
    print(a)
    #>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
    print(b)
    #>>>{'a': [1, 2, 3], 'b': 'test'} #因为深拷贝是对父对象和子对象的拷贝,也就是新的父对象和子对象都会保持独立,不受老的影响
    

      

  • 相关阅读:
    Oracle最大连续访问天数
    oracle中MINUS
    sql中含有中文,export oralce编码格式的环境变量
    alternate_file_dcol_rollback
    oracle查询分区表
    hive创建表sql
    使用ANSI改变终端输出样式
    Golang中的空字符,似花不是花
    程序员必看 Linux 常用命令(重要)
    MongoDB入门介绍与案例分析
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/4936516.html
Copyright © 2020-2023  润新知