✨今日核心知识点
列表、字典这类可变对象开发高频踩坑:修改新变量,原始数据同步改变!问题根源就是混淆赋值、浅拷贝、深拷贝。三者本质是内存引用逻辑不同,处理嵌套数据时差异尤为明显。
🌴基础语法原理
1. 赋值 b = a :仅仅新增变量引用,新旧变量指向同一块内存地址,不存在数据复制。
2. 浅拷贝 copy.copy() :创建全新外层容器;容器内部嵌套对象依旧共享内存地址。一维数据完全独立,嵌套数据会互相影响。
3. 深拷贝 copy.deepcopy() :递归复制所有层级对象,外层容器、内部嵌套元素全部开辟新内存,新旧数据完全隔离。
🎈代码实操示例
import copy
# 原始嵌套列表
data = [10, [20, 30]]
# 1.赋值操作
a = data
# 2.浅拷贝
b = copy.copy(data)
# 3.深拷贝
c = copy.deepcopy(data)
# 修改嵌套元素测试差异
data[1].append(40)
print(a,b,c)
⚠️新手易错点
1. 赋值不要当作数据备份方式,修改会同步影响原始变量
2. 浅拷贝只能隔离一维结构,遇到嵌套list、dict依然会出现数据联动
3. 字符串、元组等不可变类型,深浅拷贝几乎无区别
4. 深拷贝会带来性能开销,大规模循环场景不要盲目使用
🏖️今日小结
赋值=共用地址;浅拷贝=外层新建、内层共享;深拷贝=完整独立副本。简单一维容器可用浅拷贝,包含嵌套结构的数据备份,优先使用深拷贝。
#Python #Python自学 #编程入门 #零基础学编程 #每日编程打卡 #一天一个Python知识点