zoukankan      html  css  js  c++  java
  • python 深拷贝,浅拷贝

    深拷贝,浅拷贝

    深拷贝,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。

    浅拷贝,并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。

     # 实际代码
        data = {
                'number': number,
                'title': title,
                'type': type_obj,
                'quantity': quantity,
            } 
        for i in range(1, 3):
            book_data = data
            book_data['expect_discard_time'] = expect_discard_time
            book_data['number'] = str(number) + '-' + str(i)
            book_data['type_book'] = type_book
            book_data.pop('quantity')
            books_list.append(Books(**book_data))
    当我使book_data = data时,我变更book_data, data会同步变更,导致循环第二次时,data没有了quantity字段
    
    
    # 改正
        for i in range(1, 3):
            book_data = copy.deepcopy(data)
            book_data['expect_discard_time'] = expect_discard_time
            book_data['number'] = str(number) + '-' + str(i)
            book_data['type_book'] = type_book
            book_data.pop('quantity')
            books_list.append(Books(**book_data))
    
  • 相关阅读:
    android中ping命令的实现
    回溯法——求解0-1背包问题
    scanner使用中遇见的问题
    Eddy's digital Roots
    项目经理注意事项(3)---宏观把控
    Spring IOC容器
    C++对象模型——Template中的名称决议方式 (第七章)
    比赛对手名单
    猴子吃桃问题
    设计模式-单例模式(02)
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/14120990.html
Copyright © 2011-2022 走看看