print("-----如果是改變物件的第一層-------------")
import
copy
a1=[1,2,[3,4,5]]
b1=a1.copy()
c1=copy.deepcopy(a1)
print("
a1>
",a1) #
[1,2,[3,4,5],6]
print("
b1>
",b1) #
[1,2,[3,4,5]]
print("
c1>
",c1) #
[1,2,[3,4,5]]
#print("
-----如果是改變物件的第二層-------------")
a2=[1,2,[3,4,5]]
b2=a2.copy()
c2=copy.deepcopy(a2)
ppp"
)print("
a>
",a2) #
a2=[1,2,[3,4,5,"ppp"]]
print("
b>
",b2) #
b2=[1,2,[3,4,5,"ppp"]] 淺拷貝,共享子物件的記憶體,
print("
c>
",c2) #
c2=[1,2,[3,4,5]]
'''深淺拷貝總結:
淺拷貝:拷貝出來的新物件,他們只有物件下的第子物件是共享記憶體的,所以如果第二層的物件的
值改變的話,新物件的第二層物件也跟著改變。如果只是父物件改變,則新物件不改變
深拷貝:新拷貝出來的物件和原來的物件是兩個完全不同的物件,子物件也是不同的記憶體空間,乙個改變了
另外乙個不會改變
'''
基礎再回顧
標籤是沒有語義 的,它的作用就是為了 設定單獨的樣式用 的。這裡有幾句話這樣寫法瀏覽器會為文字自動新增雙引號,但是其實際意義在於引用別人說的話,而不是為了代替雙引號。table標籤,認識網頁上的 標題,肯定在最上面,也不能跑到表外面吧。所以在下一行的位置寫就行。備註,是這個表的備註,所以,緊跟著ta...
深淺拷貝以及深淺拷貝的方法
先考慮一種情況,對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。執行結果 呼叫一次建構函式,呼叫兩次析構函式,兩個物件的指標成員所指記憶體相同,name指標被分配一次記憶體,但是程式結束時該記憶體卻被釋放了兩次,會造成記憶...
拷貝和深淺拷貝
當list2為list的拷貝物件時,list內的可變資料型別變化,list2變化 list內的不可變資料型別變化,list2變化。總之 list變化list2一定變化 list 1,2,3,4,list2 list print list print list2 1,2,3,4,5 1,2,3,4,5...