a =8
print(a)
print(id(a))
b = a
print(b)
print(id(b))
a =10
print(a)
print(id(a))
###赋值:复制新对象引用的地址,不会另外开辟新的空间
##############################################################
###浅拷贝
##1.切片方式拷贝
lst1 = [2,4,[7,8]]
print("\nlst1:",lst1)
print("lst1 -->id:",id(lst1))
print('lst[2]-->id:',id(lst1[2]))
lst2 = lst1[:]
print("\nlst2:",lst2)
print("lst2 -->id:",id(lst2))
print('lst[2]-->id:',id(lst2[2]))
lst1[2].append(5)
print("\nlst1:",lst1)
print("lst1 -->id:",id(lst1))
print('lst[2]-->id:',id(lst1[2]))
print("\nlst2:",lst2)
print("lst2 -->id:",id(lst2))
print('lst[2]-->id:',id(lst2[2]))
###浅拷贝:复制一个对象的第一层地址,深层的地址不会复制,因为父对象和子对象共用一个地址。所以,当父对象或子对象发生变化,另一方也会跟着变化。
##########################################################################
###深拷贝
import copy
lst1 = [2,4,[7,8]]
print("\nlst1:",lst1)
print("lst1 -->id:",id(lst1))
print('lst[2]-->id:',id(lst1[2]))
lst2 = copy.deepcopy(lst1)
print("\nlst2:",lst2)
print("lst2 -->id:",id(lst2))
print('lst[2]-->id:',id(lst2[2]))
lst1[2].append(5)
print("\nlst1:",lst1)
print("lst1 -->id:",id(lst1))
print('lst[2]-->id:',id(lst1[2]))
print("\nlst2:",lst2)
print("lst2 -->id:",id(lst2))
print('lst[2]-->id:',id(lst2[2]))
深拷贝:复制一个对象的所有层次的地址,包括深层次的地址,即每个对象都有不一样的地址。对父对象或子对象进行修改,不会影响另一个对象。