当前位置:主页 > 软件编程 > Python代码 >

python 中赋值,深拷贝,浅拷贝的区别

时间:2022-09-27 11:10:56 | 栏目:Python代码 | 点击:

一、赋值实例

# a这个大列表是一个父对象,里面的小列表是a的一个子对象
a = [1, 2, 3, ["a", "b"]]
# 赋值实例
b = a
print("a:", a)
print("b:", b)
## 打印结果
a: [1, 2, 3, ['a', 'b']]
b: [1, 2, 3, ['a', 'b']]

解析:

b = a: 赋值引用,a 和 b 都指向同一个对象,所以得到的结果都一样

二、浅拷贝实例

# 浅拷贝实例
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)

## 打印结果
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 是一个独立的对象,但他们的子对象还是指向统一对象(是引用子对象)。

三、深拷贝实例

# 深拷贝实例
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)

## 打印结果
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两者是完全独立的。

您可能感兴趣的文章:

相关文章