python 深拷贝、浅拷贝

深拷贝、浅拷贝

  • 浅拷贝是指对对象的引用进行复制,即拷贝后的对象和原始对象共享同一个内存地址。如果对原始对象进行修改,拷贝后的对象也会随之改变。
  • 深拷贝则是对对象的内容进行真正的复制,即拷贝后的对象和原始对象拥有各自独立的内存地址。对原始对象进行修改不会影响到拷贝后的对象。
import copy
# 字典
original_dict = {"key1": 1, "key2": [2, 3]}

# 浅拷贝
shallow_copied_dict = original_dict.copy()
# 修改浅拷贝字典中的值
shallow_copied_dict["key1"] = 4
# 修改浅拷贝字典中的子字典
shallow_copied_dict["key2"][0] = 5
print("原始字典: ", original_dict)
print("浅拷贝字典: ", shallow_copied_dict)
print("---------------------------")
# 深拷贝
deep_copied_dict = copy.deepcopy(original_dict)
# 修改深拷贝字典中的值
deep_copied_dict["key1"] = 6
# 修改深拷贝字典中的子字典
deep_copied_dict["key2"][0] = 7
# 打印原始字典、浅拷贝字典和深拷贝字典
print("原始字典: ", original_dict)
print("深拷贝字典: ", deep_copied_dict)
import copy

# 原始列表
original_list = [1, 2, [3, 4]]

# 浅拷贝
shallow_copied_list = copy.copy(original_list)
# 修改浅拷贝列表中的子列表
shallow_copied_list[2][0] = 5
shallow_copied_list[1] = 100
print("原始列表: ", original_list)
print("浅拷贝列表: ", shallow_copied_list)
print("修改子列表对象,原始列表改变了")
print('----------------------')
# 深拷贝
deep_copied_list = copy.deepcopy(original_list)
# 修改深拷贝列表中的子列表
deep_copied_list[2][0] = 6
deep_copied_list[1] = 100
# 打印原始列表、浅拷贝列表和深拷贝列表
print("原始列表: ", original_list)
print("深拷贝列表: ", deep_copied_list)
print("深拷贝,修改子列表对象,原始列表不变")

python变量前的单下划线(伪私有变量)和双下划线(真私有变量)

class MyName:
    _name = "111"  # 伪私有变量
    __name = "222"  # 真正私有变量,但是增加get__namedede和set__namedede实例方法可访问

    def get_name(self):
        return self.__name

    def set_name(self, s):
        self.__name = s


print(MyName._name)
print(MyName.__name)# 提示AttributeError: type object 'MyName' has no attribute '__name'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值