字符串_赋值/浅拷贝/深度拷贝

 

/*
一: 赋值
二: 浅拷贝
二: 深拷贝
*/

 

一: 赋值

# 赋值
if __name__ == '__main__':
    dict1 = {'user':'Tom','num':[1,2,3]}
    
    # 直接赋值: 引用对象
    dict2 = dict1   
    print("dict1: 0x%x" %id(dict1), dict2)    # dict1: 0x17b63540100 {'user': 'Tom', 'num': [1, 2, 3]}
    print("dict2: 0x%x" %id(dict2), dict2)    # dict2: 0x17b63540100 {'user': 'Tom', 'num': [1, 2, 3]}

    dict2["user"] = "Jack"
    dict2["num"].append(66)
    print(dict1)    # {'user': 'Jack', 'num': [1, 2, 3, 66]}
    print(dict2)    # {'user': 'Jack', 'num': [1, 2, 3, 66]}

 

二: 浅拷贝

# 浅拷贝
if __name__ == '__main__':
    dict1 = {'user':'Tom','num':[1,2,3]}
    
    # 浅拷贝: 深拷贝一级目录; 二级目录为引用
    dict2 = dict1.copy()   
    print("dict1: 0x%x" %id(dict1), dict2)    # dict1: 0x2320afc0100 {'user': 'Tom', 'num': [1, 2, 3]}
    print("dict2: 0x%x" %id(dict2), dict2)    # dict2: 0x2320afc0200 {'user': 'Tom', 'num': [1, 2, 3]}

    dict2["user"] = "Jack"
    dict2["num"].append(66)
    print(dict1)    # {'user': 'Tom', 'num': [1, 2, 3, 66]}
    print(dict2)    # {'user': 'Jack', 'num': [1, 2, 3, 66]}

 


二: 深拷贝

# 深拷贝
import copy

if __name__ == '__main__':
    dict1 = {'user':'Tom','num':[1,2,3]}
    
    # 深拷贝: 完全独立
    dict2 = copy.deepcopy(dict1)  
    print("dict1: 0x%x" %id(dict1), dict2)    # dict1: 0x1c4fff30100 {'user': 'Tom', 'num': [1, 2, 3]}
    print("dict2: 0x%x" %id(dict2), dict2)    # dict2: 0x1c4805e9100 {'user': 'Tom', 'num': [1, 2, 3]}


    dict2["user"] = "Jack"
    dict2["num"].append(66)
    print(dict1)    # {'user': 'Tom', 'num': [1, 2, 3]}
    print(dict2)    # {'user': 'Jack', 'num': [1, 2, 3, 66]}

 

posted @ 2023-04-29 20:01  火焰马  阅读(23)  评论(0编辑  收藏  举报