首页 > 编程语言 > 详细

python 深拷贝,浅拷贝

时间:2020-12-11 18:26:13      阅读:33      评论:0      收藏:0      [点我收藏+]

深拷贝,浅拷贝

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

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

 # 实际代码
    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))

python 深拷贝,浅拷贝

原文:https://www.cnblogs.com/robert-zhou/p/14120990.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!