變數
id:在記憶體中的儲存位置,id(a)
value: ==
type:資料型別
==: 判斷資料型別和值
is:判斷id,資料型別和值
li =[1,'1',6]
li1 = li #直接賦值,兩者滿足'is'
li1[1, '1', 6]
id(li)
140492002190728
id(li1)
140492002190728
li is li1
true
li2 =li.copy() #列表拷貝,另外開闢記憶體空間
li2[1, '1', 6]
li2 is li
false
li2 == li
true
所有的數值型別(布林、數字)、字串都是不可變資料型別
列表是可變資料型別
列表裡巢狀列表時,淺拷貝是拷貝內建列表的儲存位置
深拷貝會把內建列表的內容拷貝出來,重新儲存乙份
淺拷貝
li=[[1,3],'2',4]
深拷貝import copy
拷貝,賦值與銷毀
拷貝控制操作基本概念 拷貝定義了當用同型別的另乙個物件初始化本物件時做什麼。賦值定義了將乙個物件賦予同型別的另乙個物件時做什麼。折構定義了當此型別物件銷毀時做什麼。拷貝建構函式 如果乙個建構函式的第乙個引數是自身型別的引用,且任何額外引數都有預設值,則此建構函式是拷貝建構函式。合成拷貝函式 如果我們...
賦值與深淺拷貝
a 1 b a a 2 print a a print b b 列印出結果 a 2 b 1 解析 當a 1的時候,記憶體中開闢兩個空間,乙個空間存放數字1,乙個空間存放數字1的實體地址0x52446c40,當b a的時候,是將a的值賦予b,記憶體中會開闢另乙個空間也是存放數字1的實體地址0x5244...
Cpp 拷貝構造與拷貝賦值
如果乙個類包含指標形式的成員變數,系統提供的預設拷貝建構函式,只是複製了指標成員變數本身,而沒有複製該變數所指向的內容,這種拷貝方式被稱為淺拷貝。淺拷貝將導致不同物件間的資料共享,同時會在析構函式中引發 double free 異常。為此就必須自己定義乙個支援複製內容即深拷貝的拷貝建構函式。類的預設...