日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

python?中賦值,深拷貝,淺拷貝的區(qū)別_python

作者:karsa__ ? 更新時間: 2022-05-18 編程語言
  • 賦值:其實就是對象的引用(相當于取別名)。
  • 淺拷貝(copy):拷貝父對象,不會拷貝對象內(nèi)部的子對象,會引用子對象。
  • 深拷貝(deepcopy): copy 模塊的 deepcopy 方法,完全拷貝了父對象及其子對象。

一、賦值實例

# a這個大列表是一個父對象,里面的小列表是a的一個子對象
a = [1, 2, 3, ["a", "b"]]
# 賦值實例
b = a
print("a:", a)
print("b:", b)
## 打印結(jié)果
a: [1, 2, 3, ['a', 'b']]
b: [1, 2, 3, ['a', 'b']]

解析:

b = a: 賦值引用,a 和 b 都指向同一個對象,所以得到的結(jié)果都一樣

二、淺拷貝實例

# 淺拷貝實例
a = [1, 2, 3, ["a", "b"]]
c = a.copy()
# 第一次打印
print("a:", a)
print("c:", c)
# 給a對象中的子對象添加元素
a[3].append("c")
print("a:", a)
print("c:", c)
# 給a這個父對象添加元素
a.append(4)
print("a:", a)
print("c:", c)

## 打印結(jié)果
a: [1, 2, 3, ['a', 'b']]
c: [1, 2, 3, ['a', 'b']]
a: [1, 2, 3, ['a', 'b', 'c']]
c: [1, 2, 3, ['a', 'b', 'c']]
a: [1, 2, 3, ['a', 'b', 'c'], 4]
c: [1, 2, 3, ['a', 'b', 'c']]

?解析:

c = a.copy(): 淺拷貝, a 和 c 是一個獨立的對象,但他們的子對象還是指向統(tǒng)一對象(是引用子對象)。

三、深拷貝實例

# 深拷貝實例
import copy
a = [1, 2, 3, ["a", "b"]]
d = copy.deepcopy(a)
# 第一次打印
print("a:", a)
print("d:", d)
# 給a對象中的子對象添加元素
a[3].append("c")
print("a:", a)
print("d:", d)
# 給a這個父對象添加元素
a.append(4)
print("a:", a)
print("d:", d)

## 打印結(jié)果
a: [1, 2, 3, ['a', 'b']]
d: [1, 2, 3, ['a', 'b']]
a: [1, 2, 3, ['a', 'b', 'c']]
d: [1, 2, 3, ['a', 'b']]
a: [1, 2, 3, ['a', 'b', 'c'], 4]
d: [1, 2, 3, ['a', 'b']]

解析:

d = copy.deepcopy(a): 深度拷貝, d 完全拷貝了a這個父對象及其子對象,a與d兩者是完全獨立的。

原文鏈接:https://blog.csdn.net/karsa__/article/details/123506526

欄目分類
最近更新