Python筆記 深拷貝 淺拷貝 參考

2021-10-07 13:41:04 字數 972 閱讀 1237

深拷貝、淺拷貝具體看:

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對於不可變型別...