91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Python深淺拷貝

發布時間:2020-08-25 14:02:59 來源:億速云 閱讀:170 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關什么是Python深淺拷貝,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

一、淺拷貝

淺拷貝是對一個對象的頂層拷貝,通俗地講就是:拷貝了引用,并沒有拷貝內容。

a = [1,2,3]
print(id(a))
b=a
print(b)
print(id(b))
a.append(4)
print(a)
print(b)

運行結果為:

1965053928072
[1, 2, 3]
1965053928072
[1, 2, 3, 4]
[1, 2, 3, 4]

二、深拷貝

 深拷貝是對于一個對象所有層次的拷貝,重新開辟內存地址。

import copy
a = [1,2,3]
print(id(a))
#使用copy模塊
b = copy.deepcopy(a)
#打印b的內存地址
print(id(b))
a.append(4)
print(a)
print(b)

運行結果為:

2035157969672
2035158105992
[1, 2, 3, 4]
[1, 2, 3]

三、深淺拷貝對比

import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = c #直接賦值,淺拷貝
print("c的內存地址為:%s"%id(c))
print("d的內存地址為:%s"%id(d))
#使用copy模塊
#深拷貝,重新開辟內存,并內容獨立
e = copy.deepcopy(c)
#深拷貝,重新開辟內存,但是新內容里面仍保存原來的引用
f = copy.copy(c)
#打印e,f的地址
print("e的內存地址為:%s"%id(e))
print("f的內存地址為:%s"%id(f))
#改變a的值
a.append(44)
#打印a,b,c,d,e,f
print("a = %s"%a)
print("b = %s"%b)
print("c = %s"%c)
print("d = %s"%d)
print("e = %s"%e)
print("f = %s"%f)

運行結果為:

c的內存地址為:2514746494856
d的內存地址為:2514746494856
e的內存地址為:2514746494920
f的內存地址為:2514746494664
a = [1, 2, 3, 44]
b = [4, 5, 6]
c = [[1, 2, 3, 44], [4, 5, 6]]
d = [[1, 2, 3, 44], [4, 5, 6]]
e = [[1, 2, 3], [4, 5, 6]]
f = [[1, 2, 3, 44], [4, 5, 6]]

說明:

1.c和d的內存地址一樣,說明是淺拷貝,兩個引用指向的是同一塊內存。

2.c,e,f內存地址不一樣,說明e和f都是深拷貝,都重新開辟的內存地址。

3.在a追加了元素44之后,打印的e中并有追加44,說明深拷貝,內容獨立。

4.在a追加了元素44之后,打印的f中也追加44,說明f也重新開辟了內存,但是新內容里面保存的是原來的引用。

四、copy對可變和不可變對象的不同

1、可變類型使用copy

import copy
a = [1,2,3]
b = copy.copy(a)
print(id(a))
print(id(b))
a.append(4)
print(a)
print(b)

運行結果為:

1626677717832
1626677715784
[1, 2, 3, 4]
[1, 2, 3]

2、不可變類型使用copy

import copy
a = (1,2,3)
b = copy.copy(a)
print(id(a))
print(id(b))

運行結果為:

2043444280704
2043444280704

總結:

簡單的賦值是淺拷貝。

copy模塊里面的copy()函數可以做一層深拷貝,雖然重新開辟了新的內存,但新內存里面仍然存放得是原來的引用。

copy模塊中的deepcopy()函數是深拷貝,重新開辟了了內存,而且內存中保存了新的值。

關于什么是Python深淺拷貝就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆昌县| 本溪| 汨罗市| 双城市| 灌云县| 济源市| 衡南县| 吴江市| 航空| 荣昌县| 华安县| 辛集市| 叶城县| 普宁市| 威海市| 湟中县| 郴州市| 绵阳市| 扎赉特旗| 德江县| 林西县| 老河口市| 龙胜| 宁晋县| 承德市| 宁安市| 奉节县| 日喀则市| 旅游| 阿克陶县| 客服| 疏附县| 当雄县| 清水县| 万源市| 兴仁县| 溆浦县| 怀宁县| 张掖市| 新田县| 林西县|