一句話讓你明白 python高階語法中的 深淺拷貝

2021-08-21 06:38:40 字數 2155 閱讀 7691

口訣: 你變我就變, 你不變我也不變, 

巢狀型別看底層元素, 看到本質,

再解釋就是說,

拷貝時, 如果資料本質是可變型別, 考慮到安全性問題, python會重新開闢一塊新的位址儲存.位址發生變化

如果資料本質是不可變型別, 那麼深淺拷貝都是位址的引用, 沒有辦法就是真麼強大, 無法撼動id.

(如果底層有可變型別,  即使頂層元素是個不可變型別, 比如元組.   ---其本質還是可變的 )

ps :

淺拷貝 : 就是拷貝頂層的元素

深拷貝 :  這就是,, 頂層, 底層全部的拷貝.

下面是測試**::::

import copy

# ------------------------------不可變型別(淺拷貝)

# 淺: 不變

# 深: 不變

a = 10

b = copy.copy(a)

c = copy.deepcopy(a)

print("整形:", id(a), "b:", id(b), "c:", id(c))

#a = (1, 3)

b = copy.copy(a)

c = copy.deepcopy(a)

print("元祖:", id(a), "b:", id(b), "c:", id(c))

# # # ------------------------------可變型別(淺深拷貝)

# 淺:  變

# 深:  變

a = [1, 3]

print("沒拷貝:", "a:", id(a), "a0:", id(b[0]), "b1:", id(b[1]))

b = copy.copy(a)

print("淺拷貝:", "b:", id(b), "b0:", id(b[0]), "c1:", id(b[1]))

c = copy.deepcopy(a)

print("深拷貝:", "c:", id(c), "c0:", id(c[0]), "d1:", id(c[1]))

d = a

print("賦值啥也不變:", "d:", id(d), "d0:", id(d[0]), "d1:", id(d[1]))

# -----------------------列表中(列表+元組)

# 淺;  變 ,不變, 不變

# 深:  變 ,變 , 不變

a = [1, 2]

b = (3, 4)

print("a:", id(a), "b:", id(b))

c = [a, b]

print("沒拷貝:", "c:", id(c), "a:", id(c[0]), "b:", id(c[1]))

d = copy.copy(c)

e = copy.deepcopy(c)

print("淺拷貝:", "d:", id(d), "a:", id(d[0]), "b:", id(d[1]))

print("深拷貝:", "e:", id(e), "a:", id(e[0]), "b:", id(e[1]))

# # ----------------------元組中(列表+元組)

# 淺;  不變, 不變, 不變

# 深:   變, 變 , 不變

a = [1, 2]

b = (3, 4)

print("a:", id(a), "b:", id(b))

c = (a, b)

print("沒拷貝:", "c:", id(c), "a:", id(c[0]), "b:", id(c[1]))

d = copy.copy(c)

e = copy.deepcopy(c)

print("淺拷貝:", "d:", id(d), "a:", id(d[0]), "b:", id(d[1]))

print("深拷貝:", "e:", id(e), "a:", id(e[0]), "b:", id(e[1]))

a = [1, 2]

b = [3, 4]

c = [a, b]

d = c[:]

print(d)

print(id(c), id(d))

c[0][0] = 90

print(d)

print(id(c), id(d))

一句話讓你開心

發信人 limilate 隨風而逝 信區 joke 標 題 一句話讓你開心 發信站 飲水思源 2005年03月13日14 56 11 星期天 1 一條警犬看到馬路上過來一條普通狗,就氣勢兇兇地跑去質問它 我是警犬,你是什麼 東西?普通狗不屑一顧地看看它說 蠢貨,看清楚點,老子是便衣!2 我有乙個要求...

一句話笑死你

女 只要有錢,我嫁誰都行。男 銀行的保險櫃你嫁嗎?病人 醫生,你把剪刀留在我肚子裡了。沒關係,我還有一把。法官 你為什麼要印 被告無辜地說 因為我不會印真鈔。妻 男人,都是膽小的。夫 不見得,否則我何以會與你結婚?上聯 哈哈哈哈哈,下聯 嘿嘿嘿嘿嘿。橫批 神經病。老師 彼得,你知道老鼠能活多少年嗎?...

mysql 匯出一句話 MySQL 匯出一句話

drop table if exists temp 如果存在temp就刪掉 create table temp cmd text not null 建立temp表,裡面就乙個cmd欄位 insert into temp cmd values php eval post cmd 把一句話木馬插入到te...