【python】copy()

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ACBattle/article/details/80607630

先上结论:


我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体存在即使改变原有的对象,也不会改变复制之后的对象


浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。相当于复制的地址,指向的新数据


注意
对于简单的对象来说,对象不会改变,只是复杂的对象,list套list这种

import numpy as np
import copy

def COPY():  
    global origin
    origin = [1,2,[3,4]]
    global t1 
    t1 = copy.copy(origin)
    global t2 
    t2 = copy.deepcopy(origin)
    print(t1,'----')
    print(t1 == t2)  # 比 较 内 容
    print(t2,'----')
    print(t2 is t1)  # 比 较 对 象
def UPDATE():
    origin[2][0] = 'hey!'
    print(origin)
    print(t1)
    print(t2)
def coPy_easy():
    t = 1
    p1 = copy.copy(t)
    p2 = copy.deepcopy(t)
    print(p1 == p2)
    print(p1 is p2)
if __name__ == '__main__':
    COPY()
    UPDATE()
    coPy_easy()
# 输出
# [1, 2, [3, 4]] ----
# True   内容还是一样的
# [1, 2, [3, 4]] ----
# False  已经不是同一个对象了
# 修改之后
# [1, 2, ['hey!', 4]]---------origin
# [1, 2, ['hey!', 4]]---------t1  复制的是一个地址
# [1, 2, [3, 4]]-------------t2  复制的是内容,生成了新的对象
# 简单对象
# True
# True 对于简单的对象就是同一个对象了

猜你喜欢

转载自blog.csdn.net/ACBattle/article/details/80607630