zoukankan      html  css  js  c++  java
  • copy函数

    python中赋值是复制对象,而是在目标和对象之间创建绑定关系,当对应对象是可变类型时,有时需要生成其副本进行修改,避免改变原对象,这就涉及到copy类中深拷贝和浅拷贝

    python赋值有3种

    #直接赋值
    a = [1,2,3,4,5,6]
    b = a   #list类型赋值操作就是传地址
    b[3] = 300
    print(a)  #[1, 2, 3, 300, 5, 6] 值被改变
    print(b)  #[1, 2, 3, 300, 5, 6]
    
    
    #浅拷贝
    a = [1,2,3,4,5,6]
    b = copy.copy(a)  #浅拷贝,a传值过去,b另辟一个内存空间
    b[3] = 300
    print(a)  #[1, 2, 3, 4, 5, 6]  值没有被改变
    print(b)  #[1, 2, 300, 4, 5, 6]
    print(id(a))
    print(id(b))  #a和b不是同一个内存空间
    
    #深拷贝和浅拷贝区别
    #数据对象有多层嵌套时,浅拷贝只拷贝一层
    #数据对象有多层嵌套时,深拷贝子对象也进行拷贝
    a = [1,2,3,[4,5,6]]
    b = copy.copy(a)
    print(id(a))  # a b  内存不一样
    print(id(b))
    print(id(a[3]))  #a[3] b[3]内存值一样
    print(id(b[3]))
    b[3][2] = 200
    print(a)   #[1, 2, 3, [4, 5, 200]] a[3][2] 值被改变
    print(b)   #[1, 2, 3, [4, 5, 200]]
    
    a = [1,2,3,[4,5,6]]
    b = copy.deepcopy(a)
    print(id(a))  # a b  内存不一样
    print(id(b))
    print(id(a[3]))  #a[3] b[3]内存值不一样
    print(id(b[3]))
    b[3][2] = 200
    print(a)   #[1, 2, 3, [4, 5, 6]] a[3][2] 值没被改变
    print(b)   #[1, 2, 3, [4, 5, 200]]
  • 相关阅读:
    SCM基础之SCM配置管理计划重要性
    SCM基础之合理设计配置库
    SCM英文术语
    中国歼20隐形战机首飞成功
    SCM基础之过程描述
    SCM基础之基线审核
    SCM基础之组织结构设计
    SCM基础之如何做到配置管理
    配置管理介绍
    软件配置管理的任务
  • 原文地址:https://www.cnblogs.com/heertong/p/12728701.html
Copyright © 2011-2022 走看看