1. 什么是可变数据类型?
修改内容后内存地址不变即修改前后id一致
2.可变数据类型特性
(1)数据类型的赋值,深浅拷贝(默认所有拷贝都是浅拷贝,除非调用deepcopy()方法)
- 赋值,内存地址一致
-
a = [1, 2, 3, 4] b = a # [1, 2, 3, 4] # 通过id()查询变量的内存地址 print(id(a)) # 4439730944 print(id(b)) # 4439730944 # 通过身份运算符 is 判断内存地址是否一致 c = a is b print(c) # True
- 浅拷贝,即子对象的修改直接影响源对象(仅copy第一层即父级,子层的索引指向一致)
-
a = [1, 2, [3, 4]] # 可变序列仅一层元素 b = a.copy() # 通过id()查询变量的内存地址 print(id(a)) # 4452776704 print(id(b)) # 4453079168 # 通过身份运算符 is 判断内存地址是否一致 c = a is b print(c) # False # 修改子级元素 b[2][0] = 6 print(a) # [1, 2, [6, 4]] print(b) # [1, 2, [6, 4]]
- 深拷贝,即子对象的修改不影响源对象(全cop