a =8
print(a)
print(id(a))
b = a
print(b)
print(id(b))
a =10
print(a)
print(id(a))
###賦值:復(fù)制新對(duì)象引用的地址,不會(huì)另外開辟新的空間
##############################################################
###淺拷貝
##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]))
###淺拷貝:復(fù)制一個(gè)對(duì)象的第一層地址,深層的地址不會(huì)復(fù)制,因?yàn)楦笇?duì)象和子對(duì)象共用一個(gè)地址。所以,當(dāng)父對(duì)象或子對(duì)象發(fā)生變化,另一方也會(huì)跟著變化。
##########################################################################
###深拷貝
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]))
深拷貝:復(fù)制一個(gè)對(duì)象的所有層次的地址,包括深層次的地址,即每個(gè)對(duì)象都有不一樣的地址。對(duì)父對(duì)象或子對(duì)象進(jìn)行修改,不會(huì)影響另一個(gè)對(duì)象。