深拷貝、淺拷貝具體看:
b=a[:] 屬於淺拷貝
參考:
當建立乙個物件,並將它賦值給乙個變數時,這個變數只是這個物件的乙個參考,而不是這個變數本身。即變數名指向記憶體中這個物件的位址。可雜湊物件原則上是沒有深、淺拷貝一說的,只有參考。
a=[1,2,3]#a為參考
b=a#b也為[1,2,3]的參考
c=a[:]#c為新物件a[:]的參考 a[:]為[1,2,3]的淺拷貝,若其中3為乙個可變物件d,則c[2]與a[2]指向同乙個記憶體,即d所指向的記憶體
#非可雜湊物件也一樣
a=[5]
b=(1,2,a)#非可雜湊物件
c=[1,2,a]#非可雜湊物件
a[0]=3
bout[17]: (1, 2, [3])
cout[18]: [1, 2, [3]]
#可雜湊物件
a=(1,2,3)
函式也是 物件,也一樣:
def hi(name="yasoob"):
return "hi " + name
print(hi())
# output: 'hi yasoob'
# 我們甚至可以將乙個函式賦值給乙個變數,比如
greet = hi
# 我們這裡沒有在使用小括號,因為我們並不是在呼叫hi函式
# 而是在將它放在greet變數裡頭。我們嘗試執行下這個
print(greet())
# output: 'hi yasoob'
# 如果我們刪掉舊的hi函式,看看會發生什麼!
del hi
print(hi())
#outputs: nameerror
print(greet())
#outputs: 'hi yasoob'
python 淺拷貝 深拷貝
直接賦值 其實就是物件的引用 別名 淺拷貝 copy 拷貝父物件,不會拷貝物件的內部的子物件。深拷貝 deepcopy copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。usr bin python import copy a 1,2,3,4,a b 原始物件 b a 賦值,傳物...
python深拷貝 淺拷貝
在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用 一般有三種方法,alist 1,2,3,a b 1 直接賦值,傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變 alist 1,2,3,...
python 深拷貝 淺拷貝
淺拷貝是對於乙個物件的頂層拷貝 通俗的理解是 拷貝了引用,並沒有拷貝內容 深拷貝是對於乙個物件所有層次的拷貝 遞迴 拷貝字典 值相當於鍵的引用 所以copy.copy 為淺拷貝 淺拷貝對不可變型別和可變型別的copy不同 copy.copy對於可變型別,會進行淺拷貝 copy.copy對於不可變型別...